2012-05-07 2 views
0

Say У меня есть строка:Unix Экспорт Переменные Tokenised строки

'EffTimeStamp="20110203-210000"#InputCtxNm="Forigen Exchange Today"#RunType="EOD"#Age="90" 

Использование:

echo 'EffTimeStamp="20110203-210000"#InputCtxNm="Forigen Exchange Today"#RunType="EOD"#Region=US#Age="90"' \ | awk -F# -v OFS="\n" '{for (i=1;i<=NF; i++) printf("%s%s", $i, (i==NF ? "\n" : OFS)) }' 

Я преобразовать его в:

EffTimeStamp="20110203-210000" 
InputCtxNm="Forigen Exchange Today" 
RunType="EOD" 
Region=US 
Age="90" 

Я хочу экспортировать их как Shell переменные ,

Примечание: Количество переменных в строке может отличаться по усмотрению пользователя.

Пожалуйста, помогите.

ответ

0

В вашем AWK используйте

printf("export %s%s" 

, а затем заменить 'эхо' с 'Eval'.

+0

это не работает ... когда я эхо переменной его отображения пустых значений и что, если вместо awk Я использую sed: echo '"EffTimeStamp = 20110203-210000 # InputCtxNm = Forigen Exchange Today # RunType = EOD"' | sed 's/^ "//; s/=/="/g; s/#/"\ n/g' –

+0

, пожалуйста, отредактируйте свой вопрос, включив эту ценную информацию для отладки. редактирует мой вопрос ». Удачи. – shellter

+0

см. правки на мои вопросы: Я попытался сделать это, но привел к пустым экспорту. ' sac $ eval 'EffTimeStamp = "20110203-210000" # InputCtxNm = "Forigen Exchange Today" # RunType > | awk -F # -v OFS = "\ n" '{for (i = 1; i <= NF; i ++) printf ("export% s% s", $ i, (i == NF? " \ п»: OFS))}» мешок $ мешок $ эхо $ RunType мешок $ мешок $ эхо $ EffTimeStamp мешок $ ' –

1

Какая у вас раковина?

Предполагая Баш, попробуйте следующее:

source <(awk -v RS="#" '{print "export " $0}' <<< "$string") 

Для KSH, это должно работать

. <(printf "%s\n" "$string" | awk -v RS="#" '{print "export " $0}') 
+0

см. Правки на мои вопросы: как это можно сделать в Korn Shell для KSH. –

+0

@JamesBond, я обновил свой ответ для ksh. –

Смежные вопросы