以下のコードを使用してファイルを簡単に呼び出せるように、コマンドをファイルに保存しようとしています。
./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
ファイルを編集してファイルに直接シェルコマンドを入力するには、テキストエディタを使用するのが最善です。