2016-12-14 12 views
0

forループにvk,pr,nssdoutを格納する必要があります。私は、私はエラー以下のいる+=を試してみました./script05.sh: line 22: +=: command not foundforループの変数に追加する

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または同様に属しているようです。 So:あなたはbashを使っていますか?真の場合:どのバージョンですか? – sorontar

+0

'echo $ BASH_VERSION 4.3.42(1)-release'は私のバージョンです –

+0

あなたが提示しているスクリプトはあなたが尋ねているエラーとは関係ありません。あなたの問題を編集して、問題が発生しているエラーとそのようなエラーを引き起こした正確なスクリプトについて質問してください。 – sorontar

答えて

3

の正しい構文« $ SDOUT + = "値"»次のようになります。

sdout+="value" 

または完全に修正:

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

+=オペレータの周囲にはスペースを入れないでください。
これは、変数sdoutを変更することが望ましいと仮定しています。

$sderr += "$ns"'\t'"nie"'\n'で他の2つの行にも同じことが当てはまります。
彼らは、次のようになります。

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

'script05.sh:line 22:+ = ol \ tnie \ n:空白を削除した後でコマンドが見つかりませんでした ' –

+0

@VladimírFencák変数名の前に' $ ' 。 '$ sdout + =' – sorontar

+0

を使用しないでください@sorontar '$'は変数の値を取得するために使用されます。ところで、[shellcheck.net](http://www.shellcheck.net/)は、このような間違いを見つけ出すのに適しています。 –

関連する問題