-1

次のように定義されたユーザー定義の環境変数が指すファイルがあります$file

file='filename.groovy'

私がする時:

echo $file

次のように問題なく正しく印刷されます。

filename.groovy

そして私がするとき:

cat $file

ファイル「filename.groovy」の内容を正常に印刷しています

ここまですべて完璧

しかし、問題は次のとおりです。

sedコマンドの出力を次のようにリダイレクトしようとすると:

sed 's/def version = ".*"/def version = "'$version'"/' $file > $file

その後

猫$ファイル

その印刷は何もありません。つまり、元のファイルが切り捨てられました。

なぜそうなのですか?

sed変数 $file を使用して、コマンドの出力をファイル 'filename.groovy'にリダイレクトする理由と解決策を提案してください。

よろしくお願いします。. .

4

2 に答える 2

1

ファイルを読み取ったり、その間に出力をリダイレクトしたりすることはできません。

できることは、ファイルを更新する-iパラメーターを使用することです。sed

sed -i 's/def version = ".*"/def version = "'$version'"/' $file

昨日投稿したhttps://stackoverflow.com/a/16901328/1983854で例を見ることができます。

于 2013-06-04T11:48:38.447 に答える