bashで変数と二重引用符を使用すると、終了しないエラーが発生します。

bashで変数と二重引用符を使用すると、終了しないエラーが発生します。

次のコードがありますunterminated error$1ABC-TXT-123TEXT abc.123ABC-TXT-123

#!/bin/bash
id=$1
if [[ $id =~ .*TXT.* ]]; then
    sed -i "s/TEXT abc.*/TEXT $id/" someDataFile
fi

答え1

次のコマンドでうまく動作します。

$ cat > test
asd asd asd asd
asd TEXT abc.123 asd
asd asd asd asd

$ var='ABC-TXT-123'
$ sed -i "s/TEXT abc.*/TEXT $var/" test

$ cat test
asd asd asd asd asd
asd TEXT ABC-TXT-123
asd asd asd asd asd

おそらくそのファイルの一部を私たちに提供してください。

答え2

''OSXでは、機能するためにもう1つ追加する必要がありました。

#!/bin/bash
id=$1
if [[ $id =~ .*TXT.* ]]; then
    sed -i '' 's/TEXT abc.*/TEXT '$id'/' someDataFile
fi

これは、someDataFileの内容が「TEXT abc.123」から「TEXT ABC-TXT-123」に変更されることを意味します。ただし、説明要件が若干異なるため、以下が必要になる場合があります。

    sed -i '' 's/TEXT abc.*/'$id'/' someDataFile

代わりに「TEXT」という単語を入れ直すのではなく、行全体を置き換えるには...

関連情報