sedはshファイルでは機能しませんが、コマンドラインでは機能します。

sedはshファイルでは機能しませんが、コマンドラインでは機能します。

sedshコマンドラインでは機能しますが、ファイルに入れて実行すると機能しません。既存のファイルの番号を変更して新しいファイルに渡したいので、次のことを試しました。

echo enter number 
read num
var1='more ods2.sql | egrep -e "test" | cut -c 5-7' 
sed "s/test$var1/test$num/g" ods2.sql > odstest.sql

プロンプトでこれらの文を実行すると、目的の結果が得られます。$var1渡した文字列に置き換えます。たとえば、次のようになります12345

sed "s/test$var1/test$num/g" ods2.sql > odstest.sql

プロンプトでは、これもうまく機能します。

more ods2.sql | egrep -e "test" | cut -c 5-7'

シェルスクリプトに入れるとなぜ動作しませんか?

ベストアンサー1

この行

var1='more ods2.sql | egrep -e "test" | cut -c 5-7'

しなければならない

var1=`more ods2.sql | egrep -e "test" | cut -c 5-7`

つまり、一重引用符(アポストロフィ)の代わりにバックティックを使用する必要があります。

おすすめ記事