コマンドをファイルに保存

コマンドをファイルに保存

以下のコードを使用してファイルを簡単に呼び出せるように、コマンドをファイルに保存しようとしています。

./test

このコードを実行する必要があります。

Set n=0 ; foreach sql ( *_*.sql)
foreach? sed “s/_/-/g” $sql
foreach? @ n ++
foreach? End
echo You changed $n files

私は次のように入力しました。

set n = 0 > test
foreach sql ( *_*.sql) >> test

ここまで来たとき、ターミナルに空白行が現れ、次の3行をブラインド入力しました。

foreach? sed “s/_/-/g” $sql
foreach? @ n ++
foreach? End

それから次に終わります。

echo 'echo You changed $n files' >> test

完了すると、出力ファイルには次のコンテンツのみが含まれます。

foreach? sed "s/_/-/g" $sql
foreach? @ n ++
foreach? end
echo You changed $n file

set コマンドと foreach ループの開始が完全に欠落しています。私がここで何を見逃しているのでしょうか?それとも単に不可能ですか?

編集済み

#!/bin/tcsh
set n=0
foreach sql ( *_*.sql )
sed "s/_/-/g" $sql
@ n ++
end
echo You changed $n files
chmod 777 test

ベストアンサー1

シェルのコマンドラインで操作を実行しようとすると問題がたくさんあります。echo方向を変えなければならないすべて現在シェルで解釈され、生成されているファイルに配置されないように、シェルメタ文字を引用する必要があります。testファイルを編集してファイルに直接シェルコマンドを入力するには、テキストエディタを使用するのが最善です。

おすすめ記事