2013-12-17 106 views
1
if [[ ! -z grep echo "${prof}" | cut -d. -f1 dm_smear.dat ]] 

這給了我以下錯誤。我試圖找到一個文件dm_smear.dat字符串${prof},如果該文件中存在,我會做一些操作,如果語句語法錯誤(shell)

: syntax error in conditional expression 
: syntax error near `1`' 
: `   if [[ ! -z grep `echo "${prof}" | cut -d . -f 1` dm_smear.dat ]]' 
+0

什麼是變量'$ {}教授'包含哪些內容?考慮到這段代碼中語法錯誤和錯誤概念的數量,你可能會更好地解釋*究竟會發生什麼,而不是讓我們猜測。 – tripleee

+0

'if'語句不是一個循環。 –

回答

1

我試圖找到一個字符串$ {}教授在一個文件中dm_smear.dat如果 該文件中存在,我會做一些操作,

您可以簡單地使用-q選項grep。你說:

if grep -q "${prof}" dm_smear.dat; then 
    echo "Found the string" 
    # Do something here 
fi 

您可以通過正確使用過程中替代解決您的原始代碼:

if [[ ! -z $(grep $(echo "${prof}" | cut -d . -f 1) dm_smear.dat) ]]; 
    echo "Found the string" 
    # Do something here 
fi 
+0

這只是使它安靜,仍然循環不運行。 我也試過 if [[! -z貓dm_smear.dat | grep'echo「$ {prof}」|切-d。 -f1']] ,但接着出現相同的錯誤。 – Devansh

+0

@Devansh你爲什麼執行:'if [[!! -z貓dm_smear.dat | grep echo「$ {prof}」|切-d。 -f1]]; '?你甚至嘗試了答案中的建議嗎? – devnull

+0

是的,我做到了!循環不運行。 我做了有和沒有-q 與-q:循環不運行 沒有-q給出相同的錯誤 – Devansh

0

你可以試試下面的代碼

教授= 「KEY1」

如果! [-z cut -d. -f1 dm_smear.dat | grep ${prof}];然後

 echo "FOUND" 

其他

 echo "NOT FOUND" 

網絡

在上面的代碼中,我們在第一列搜索在dm_smear.dat文件KEY1

如果文件中包含KEY1輸出會被發現在任何行的第一列,否則它打印NOT FOUND

其中dm_ smear.dat包含

KEY1.VALUE1

KEY2.VALUE2

KEY3.VALUE2