sed
sh
コマンドラインでは機能しますが、ファイルに入れて実行すると機能しません。既存のファイルの番号を変更して新しいファイルに渡したいので、次のことを試しました。
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`
つまり、一重引用符(アポストロフィ)の代わりにバックティックを使用する必要があります。