Ubuntu shell脚本获取错误

时间:2012-11-02 08:16:27

标签: bash shell ubuntu

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

比较运算符=(如POSIX中所定义)。但是==也适用于一些shell。 这样的事情应该有效:

if [ $i = backup ] || [ $i = $filename ] ; then

答案 2 :(得分:1)

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

if [[ $i == backup || $i == $filename ]] ; then