2016-12-14 163 views
0

我需要在for循環中存儲vkprnssdout。我試圖+=但我有以下錯誤./script05.sh: line 22: +=: command not foundAppen to變量for for循環

sdout= 
sderr= 
for a in "$1"/* 
do 
    vk=$(egrep ".*" $a -s|wc -c) 
    pr=$(egrep "^[a-z ]+$" $a -s| wc -l) 
    ns=$(echo $a | sed "s/.*\/\(.*\)/\1/") 
    $sdout += "$vk $ns"'\t'"$pr"'\n' 
    echo $vk 
    if [ $pr -eq 0 ] 
    then 
     $sderr += "$ns"'\t'"nie"'\n' 

    else 
     $sderr += "$ns"'\t'"ano"'\n' 
    fi 
done 
+0

的錯誤似乎屬於一個非常古老的bash 3.0版或相似。所以:你使用bash嗎?如果爲真:什麼版本? – sorontar

+0

'回聲$ BASH_VERSION 42年3月4日(1)-release'是我 –

+0

版本,那麼,你目前的文字沒有關係你問有關錯誤的。請編輯您的問題,詢問您遇到問題的錯誤以及導致此類錯誤的確切腳本。 – sorontar

回答

3

的正確語法« $ SDOUT + = 「價值」»應該是:

sdout+="value" 

或完全糾正:

sdout+="$vk $ns"'\t'"$pr"'\n' 

圍繞+=運營商不能有空格。
這是假設你想要的是改變變量sdout

同樣適用於其他兩行$sderr += "$ns"'\t'"nie"'\n'
他們應該是:

sderr+="$ns"'\t'"nie"'\n' 
sderr+="$ns"'\t'"ano"'\n' 
+0

'script05.sh:22行:+ = OL \ tnie \ N:刪除空格 –

+0

@VladimírFencák你刪除的變量名稱前面的'$'後命令不found' ????? 。不要使用'$ SDOUT + =' – sorontar

+0

@sorontar'$'用於*獲得*變量的值,而不是設置時。順便說一句,[shellcheck.net](http://www.shellcheck.net/)善於發現這樣的錯誤。 –