2015-06-25 63 views
0

代碼:Linux的bash腳本:使用轉義字符的字符串,如果比較

if [["$MP" -ne "$vl2"]]; then 
    echo -e "Comparing Apples to Oranges !!\n" >> ${LOGFILE} 
    subject="$0 : Warning : Please check Source Directory" 
    SendEmail I "${subject}" "" "${LOGFILE}" "${vel}" 
    exit 99 
fi 

這裏是輸出:請檢查最後一行的錯誤。謝謝 !

+ PG=./cleanupADir.sh 
+ MP=/u01/oracle 
+ TH=90 
+ MT=3 
+ TY=log 
+ SD=/u01/oradata/logs 
++ expr length /u01/oracle 
+ vl1=11 
++ expr substr /u01/oradata/logs 1 11 
+ vl2=/u01/oradat 
+ echo /u01/oradat /u01/oracle 
/u01/oradat /u01/oracle 
+ '[[/u01/oracle' -ne '/u01/oradat]]' 
./cleanupADir.sh: line 73: [[/u01/oracle: No such file or directory 
+0

的http:// shellcheck.net/是你的朋友。不會在這裏捕捉到每個問題(沒有給出變量的值),但會捕獲其中的一些問題。 –

回答

3

添加幾個空格[[之後和之前]],以及串改變ne!=

if [[ "$MP" != "$vl2" ]]; then 

類似的會議:

$ set -x 
$ export x=apple 
+ export x=apple 
+ x=apple 
$ export y=orange 
+ export y=orange 
+ y=orange 
$ if [["$x" -ne "$y"]];then echo "XXX";fi 
+ '[[apple' -ne 'orange]]' 
bash: [[apple: command not found 
if [[ "$x" -ne "$y" ]];then echo "XXX";fi 
+ [[ apple -ne orange ]] 
if [[ "$x" != "$y" ]];then echo "XXX";fi 
+ [[ apple != \o\r\a\n\g\e ]] 
+ echo XXX 
XXX 
+0

這工作謝謝!但是爲什麼它在!=後面進行這些轉義?我有IFS =/set,但我刪除它並退出shell並重新創建腳本,但仍然是? + echo/u01/oradat/u01/oracle /u01/oradat/u01/oracle + [[/ u01/oracle!= \/u \ 0 \ 1 \/\ o \ r \ a \ d \ a \ t]] – user1918074