設定ファイル全体を変数として保存するawkコマンドを作ろうとしています。AWKを使って設定ファイルを解析する
設定ファイルには、(キーがスペースを持っていることはありませんが、値があります)次の形式である:
key=value
key2=value two
そして、私のawkコマンドは次のとおりです。
$(awk -F= '{printf "declare %s=\"%s\"\n", $1, $2}' $file)
外側サブシェルなく、これを実行する$(...)
結果として、正確なコマンドが出力されるようになるので、私の質問はAWKについてはあまりなく、AWKの出力をどのようにコマンドとして実行することができるのかについて詳しく説明しています。それ以来、二重引用符は、値が格納され、多少問題がある
declare 'key="value"'
:
コマンドが評価されます。さらに悪いことには、スペースが、その結果、導入されたとき:もちろん
declare 'key2="value' two"
、私は引用符を削除することはできませんまたはマルチワード値は問題を引き起こします。
set -f
,eval
、system()
など、私が見つけたソリューションはすべて試しました。
もし私が 'eval $(echo k = value 2 | awk -F = '{printf"%s = \ "%s \" \ n "、$ 1、$ 2}')' 'を宣言してから' echo $ k 'それは私に値2を返します。それはあなたのために働いていないのですか? – jas