我正在开发简单的shell脚本,它将我目前的所有目录文件复制到备份目录,该目录将存在于当前工作目录中。现在,当我在 if 中传递多个条件时,我会收到错误。
#!/bin/bash
filename=nx.pdf
for i in *;
do
echo $i;
if [ $i == backup || $i == $filename ] ; then
echo "Found backup."
else
echo "Part 2"
cp -rf $i backup
fi
done
我收到错误
asd.sh: line 6: [: missing `]'
asd.sh: line 6: ==: command not found
Part 2
deployee.sh
asd.sh: line 6: [: missing `]'
asd.sh: line 6: ==: command not found
Part 2
答案 0 :(得分:1)
你应该在“”中引用$ i。否则,您会收到带有空格的文件名的语法错误。
答案 1 :(得分:1)
比较运算符=(如POSIX中所定义)。但是==也适用于一些shell。 这样的事情应该有效:
if [ $i = backup ] || [ $i = $filename ] ; then
答案 2 :(得分:1)
为了能够在条件中使用||
和&&
,您必须使用双方括号:
if [[ $i == backup || $i == $filename ]] ; then