我一直在使用谷歌搜索和嘗試不同的方法,但似乎沒有任何工作。似乎無法在shell中添加兩個數字
我有以下代碼
string=0 4 5 27 8 7 0 6
total=0
for n in "$string"; do
total=$(($total + $n))
done
這樣,我想算該字符串中的所有數字的總和。
我也試過expr "$total" + "$n"
,但這給了我一個錯誤,說操作數不是一個整數。
任何建議我如何做這項工作?
我一直在使用谷歌搜索和嘗試不同的方法,但似乎沒有任何工作。似乎無法在shell中添加兩個數字
我有以下代碼
string=0 4 5 27 8 7 0 6
total=0
for n in "$string"; do
total=$(($total + $n))
done
這樣,我想算該字符串中的所有數字的總和。
我也試過expr "$total" + "$n"
,但這給了我一個錯誤,說操作數不是一個整數。
任何建議我如何做這項工作?
裏面不要引用的字符串in
子句,引用的字符串不分爲wo rds:
#! /bin/bash
total=0
string='0 4 5 27 8 7 0 6'
for n in $string ; do
((total += n))
done
echo $total
哦,訣竅!非常感謝 : ) – Daeto
string=0 4 5 27 8 7 0 6
這試圖設置變量string
到0
,然後調用與參數5 27 8 7 0 6
命令4
。
您需要引用值:
string="0 4 5 27 8 7 0 6"
而你需要的時候,你是指它刪除引號;改變
for n in "$string"; do
到
for n in $string; do
你應該使用:
total=$((total + n))
無需對$
變量之前$(())
聲明
是的,但它們是無害的。這並沒有回答這個問題。 –
@誠然,說實話,我只讀過標題和給定的代碼,添加發生的地方..我雖然沒有問題不完全是標題說的!下次我會更加小心,謝謝 – bew
@bew78規則一支持:永遠不要相信任何人要求支持聲明,因爲他們不能信任有關他們問題的事情。如果他們完全掌握了這種情況,他們就不會尋求幫助;-)總是要驗證並觀察上下文。 ;-) – Carpetsmoker
嘗試在'for'循環的第一行添加'echo「 - > $ n」'來查看哪裏出了問題;-)另外,你確定你沒有收到錯誤那第一行? – Carpetsmoker
echo $ n列出了所有的數字。爲什麼我會在第一行收到錯誤消息? – Daeto
那麼,你想要什麼?因爲'$ total + 0 4 5 27 8 7 0 6'似乎不是你想要做的事情? – Carpetsmoker