シェルスクリプトファイルに一連のbashコマンドを書き込んで、サーバ上で実行しようとしています。シェルスクリプトを生成するときにコンソールがテキストファイルに出力する
diffコマンドをスクリプトファイルに書き込んで、実行することが予想され、コンソール出力が* .txtファイルに書き込まれるまで、正常に動作します。何らかの理由で、* .txtファイルにdiffの結果が含まれていない...これを修正するために何かできますか?
A_DIR_1=methuselah/test1
A_DIR_2=methuselah/test2
A_DIR_3=methuselah/test3
B_DIR_1=methuselah/backup1
B_DIR_2=methuselah/backup2
B_DIR_3=methuselah/backup3
DST_DIR=methuselah/output
echo "touch $DST_DIR/output.txt" >> /tmp/$$.sh
for i in {1..3}
do
A_DIR="A_DIR_$i"
B_DIR="B_DIR_$i"
echo "diff -qr ${!A_DIR} ${!B_DIR} >> $DST_DIR/output.txt" >> /tmp/$$.sh
done
cat /tmp/$$.sh
ssh [email protected]$SERVER 'sh -s' < /tmp/$$.sh
rm /tmp/$$.sh
このスクリプトを作成しているシェルはどちらですか? '(1..3)'は、中括拡張のための間違った方法です。構文エラー – Inian
を投げます。申し訳ありませんが、それを修正しました。私はbash(Bourne Again Shell)を使用しています – methuselah
何か問題がありますか?スクリプト '/ tmp/num.sh'はサーバー上で直接実行されると機能しますか? – PesaThe