0

我正在开发简单的 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
4

3 回答 3

1

您应该在“”中引用 $i。否则,您会收到带有空格的文件名的语法错误。

于 2012-11-02T08:17:52.357 回答
1

比较运算符是 =(在 POSIX 中定义)。但是 == 也适用于某些 shell。像这样的东西应该工作:

if [ $i = backup ] || [ $i = $filename ] ; then
于 2012-11-02T08:23:50.267 回答
1

为了能够在条件下使用||&&,您必须使用双方括号:

if [[ $i == backup || $i == $filename ]] ; then
于 2012-11-02T08:27:56.717 回答