0
sedの上では動作しませんvar_:
1stRecord value
2ndRecord value
3rdRecord value
私はいくつかのレコードの値を交換する必要があります。
ここは、いくつかのfile.confです。ここに私のスクリプトです:私はそれが
correct_1stRecord='new1stValue'
correct_2ndRecord='new2ndValue'
correct_3rdRecord='new3rdValue'
function correct_record() {
sed -i 's/^$1 $(cat file.conf | grep -e "^$1" | awk '{print $2}')/$1 $correct_$1/" file.conf
}
correct_record 3rdRecord
実行$ correct_ $ 1 $ correct_3rdRecordに切り替えて、結果として、私はこのレコードがありませんでした。私はそれがあることを期待すると
3rdRecord 3rdRecord
を:
を私はそれはcorrect_3rdRecordが存在しないコマンドを示したBYT/$ 1 $(correct_ $ 1)にsedの式の2番目の部分を変更しようとしていた3rdRecord new3rdValue
は、しかし、(1)それは、コマンドが、変数ではありません、 (2)I d idはそれを上に宣言します。
変数は一重引用符で囲まれていませんが、実際に何をしようとしていますか? 'cat'、' sed'、 'grep'、' awk'を同時に使う理由はほとんどありません。私は質問を作成するときに引用がちょっと混乱していると思います。展開する変数の名前に '$ correct_ $ 1'を使用しようとしている場合は、https://stackoverflow.com/questions/1694196/lookup-shell-variables-by-name-間接的に –