2016-12-14 131 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/)善于发现这样的错误。 –