IF 语句 AIX(Korn Shell 脚本)

IF 语句 AIX(Korn Shell 脚本)

我制作了一个收集信息的脚本。它所做的事情之一是检查文件或目录是否存在。如果是,则将其复制到/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

相关内容