情報を収集するスクリプトを作成しました。それがすることの1つは、ファイルやディレクトリが存在することを確認することです。その場合は、/tmp
ディレクトリにコピーします。
スクリプトが失敗します。
0403-057行3の構文エラー: 'then'が一致しません。
これは失敗したステートメントです。
if [ -d /etc/nginx ];
then
cp -R /etc/nginx/* /tmp/
fi
答え1
台本はとても良いです。説明したエラーは、Windowsスタイルの行末があることを意味する可能性があります。\r
各行の末尾に以下を追加してそれを再現できます。
$ cat script.sh
if [ -d /etc/nginx ];
then
cp -R /etc/nginx/* /tmp/
fi
$ sed 's/$/\r/' script.sh
$ ksh script.sh
script.sh: syntax error at line 5: `if' unmatched
Windowsシステムでファイルを編集した可能性があり、\r\n
通常の* nix行末の\n
代わりに行末が挿入されました。ただ削除してください:
sed -i 's/\r//' script.sh
ただし、これはAIXでは機能しない可能性がありますsed
。そうでない場合は、代わりに以下を使用してください。
sed 's/\r//' script.sh > tempFile && mv tempFile script.sh
または
tr -d '\r' < script.sh > tempFile && mv tempFile script.sh