2012-11-02 86 views
0

我正在開發簡單的shell腳本,它將所有當前目錄文件複製到備份目錄中,該目錄將存在於當前工作目錄中。現在我得到錯誤,當我通過如果多一個條件。Ubuntu shell腳本獲取錯誤

#!/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 

回答

1

比較運算符=(如POSIX中定義的)。但是==也適用於一些shell。 像這樣的東西應該工作:

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

你應該$我引用的 「」。否則,你會得到帶有空格的文件名的語法錯誤。

+0

如果[$ i = =備份];然後 回聲「發現」 然後我沒有得到錯誤。 –

1

爲了能夠在條件使用||&&,你必須使用雙括號:如果我做 {

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