2014-01-23 150 views
0

我從昨天開始面臨一個問題,試圖在互聯網上搜索如何解決它......沒有結果。Bash沒有返回這樣的文件或目錄

它就在那裏。這是我的計劃:

OTHERDIR="/tech/gtr/scripts/osm/scan-configs" 
filename="IDF-952584-SW1-126.110.84.253" 
estdifferent=true; 
if $estdifferent ; then 
    x=0; 
    for fic in `find $OTHERDIR/liste/ -type f -name $filename*` ; do 
    { 
    echo $fic 
    if [[$fic == *bak*]] 
    then 
      filename_tab[x]=$fic 
      ((x++)) 
    fi 
    } 

我要檢查,如果$ FIC包含*李明博*末

但調試告訴我這個當它到達「如果」指令:

'[[/tech/gtr/scripts/osm/scan-configs/liste/IDF-952584-SW1-126.110.84.253_bak1' == '*bak*]]' 

comparatif.sh: line 29: [[/tech/gtr/scripts/osm/scan-configs/liste/IDF-952584-SW1-126.110.84.253_bak1: No such file or directory 

爲什麼它告訴我「沒有這樣的文件或目錄」?我正在比較一個var和一個正則表達式。 (第29行是IF $ FIC == *李明博*指令)

回答

2

所需要的比較內部空間:

if [[ $fic == *bak* ]] 
    ^   ^

感謝它,而不是

if [[$fic == *bak*]] 
+0

。我有這個代碼的另一個問題。 如果我在循環下添加echo「somethin」 程序正在爲所有代碼運行「for」循環,甚至是回聲。我的語法錯了嗎? –

+0

'for'循環從'do'執行到'done',所以不需要'{',只使用該語法。如果您需要進一步解釋,請使用當前代碼更新您的問題。 – fedorqui

+1

是的,我讀了整個代碼,我有一個「完成」的標記沒用。謝謝 –

相關問題