sedはコマンドラインでは機能しますが、スクリプトでは機能しません。

sedはコマンドラインでは機能しますが、スクリプトでは機能しません。

コマンドラインに直接入力すると機能するのはなぜですか?

oldversion=12345
newversion=67890
sed -i "s/${oldversion}/${newversion}/g" "/home/user/MyDir_${newversion}/MyDir_${newversion}.reg"

しかし、スクリプトに入れると、次のようになりません。

#!/bin/bash
oldversion=12345
newversion=67890
sed -i "s/${oldversion}/${newversion}/g" "/home/user/MyDir_${newversion}/MyDir_${newversion}.reg"

次のように実行されます。./myscript.sh

エラーが発生しました

sed: -e 式 #1、文字 16: 's' の不明なオプション

ベストアンサー1

文字 16 は sed スクリプトには存在しません。これは"sedが文句を言う文字です。これは、エディタまたは入力メソッドがそれをASCIIではなく表現に置き換えたことを意味します"。私の推測は、または¨

ファイルを使用してエンコードfileを推測してください。 「ASCII」でなければなりません。その他の内容は、ファイルに意図しないコンテンツが含まれていることを意味します。

おすすめ記事