IF文AIX(Kornシェルスクリプト)

IF文AIX(Kornシェルスクリプト)

情報を収集するスクリプトを作成しました。それがすることの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

関連情報