Odpowiedzi:
Twoja składnia oceny arytmetycznej jest nieprawidłowa. Użyj dowolnej z poniższych (pierwszy jest bardzo przenośny, ale powolna, drugi POSIX i przenośne z wyjątkiem Bourne shell i wcześniejsze wersje Almquist skorupek trzy ostatnie wymagają ksh, bashlub zsh):
a=`expr "$a" + "$num"`
a=$(($a+$num))
((a=a+num))
let a=a+num
((a+=num))
Lub możesz po prostu pominąć całą forpętlę i po prostu zrobić:
wc -l folder/*
Lub jeśli chcesz tylko całość:
cat folder/* | wc -l
Lub z zsh i jego mult_iosopcją:
wc -l < folder/*
możesz również użyć tego kodu
a=`expr $a + $num`
echo $a
i UPEWNIJ SIĘ, ŻE JEST PRZESTRZEŃ NA OBU STRONACH + W „$ a + $ num”
Przepraszamy, poprzednia edycja dotyczyła innego wpisu. Oto tylko niewielka modyfikacja oryginalnego skryptu:
niech a = 0
niech num = 0
dla i w folderze / *
robić
num = `cat $ i | wc -l`
a = $ (echo $ a + $ num | bc)
gotowy
echo $ a
Odpowiedź musi określać, w której powłoce kod jest poprawny. Na przykład w bourne Shell ( sh) obowiązują tylko następujące instrukcje:
a=$((a+num))
a=$(($a+$num))
podczas gdy inne możliwości wymienione przez @manatwork mogą być ważne w bourne ponownie shell ( bash)
tak to robię
MY_VARIABLE=$((num1+num2))
$wnętrza((...)).a=$((a+num))jest już w porządku.