2014-01-08 16 views
0

獲取錯誤if條款,說:錯誤:「首頁/檔案」意想不到的猛砸/ KSH程序

/home/files unexpected. 

我不知道什麼是錯的,這裏的KornShell(KSH)腳本。

#!/bin/ksh 
selectPart="SELECT." 
filePart="_FILE" 
while read -r indxFile; do 
    while read -r cobolFile; do 
    query=$selectPart"${indxFile}"$filePart 
    if [[ find /home/files -name "${cobolFile}" | xargs grep $query ]];then 
     while read -r scriptFile;do 
      print "${scriptFile}" 
     done <listScripts.txt> "${indxFile}".txt 
    fi 

    done < cobolNames.txt 
done < indexedFiles.txt 
+0

您可能需要'>>「$ {indxFile}」.txt',否則它將被每個內部while循環覆蓋。 – chepner

+0

一個條件通常是一個命令;結果取決於命令是成功還是失敗。 '[['是一個特例。 '[['和']]'之間的東西是表達式,而不是命令。 –

回答

1

你可以只取出周圍的狀況的[[ ]]你是否:

if find /home/files -name "${cobolFile}" | xargs grep $query ; then 
+0

這是否意味着只有'$ query'出現在'「$ {cobolFile}」中時if語句纔會計算爲真「 – Programmer

+0

至少在一個名爲'$ cobolFile'的文件中,是 – remram

0

請提供您的任務的更多細節。這是您的代碼更新問題。

#!/bin/ksh 
selectPart="SELECT." 
filePart="_FILE" 
while read -r indxFile; do 
    while read -r cobolFile; do 
    query=$selectPart"${indxFile}"$filePart 
    findResult=find /home/files -name "${cobolFile}" | xargs grep $query 
    echo "findResult: ${findResult}" 
    if [[${findResult} -eq 0]]; then 
     while read -r scriptFile;do 
      print "${scriptFile}" 
     done <listScripts.txt>> "${indxFile}".txt 
    fi 
    done < cobolNames.txt 
done < indexedFiles.txt