2016-11-07 57 views
-1

我試圖運行一個bash腳本,但由於某種原因,這部分輸出給了我一個錯誤。Linux語法錯誤

TIER1PCT=$[ $TIER1COUNT * 100/$TOTAL ] TIER2PCT=$[ $TIER2COUNT * 100/$TOTAL ] TIER3PCT=$[ $TIER3COUNT * 100/$TOTAL ]

我收到此錯誤::syntax error: operand expected (error token is "/ ")

+4

我假設變量'$ TOTAL'不包含任何值。 – Cyrus

+0

值爲'TOTAL = $(cat $ NEWUSERSFILE | wc -1)' –

+0

這可能有助於:[如何調試bash腳本?](http://unix.stackexchange.com/q/155551/74329) – Cyrus

回答

1

試試這個;

TOTAL=$(cat $NEWUSERSFILE | wc -l) 

if [ -n "$TOTAL" ]; then 
TIER1PCT=$[ $TIER1COUNT * 100/$TOTAL ] 
TIER2PCT=$[ $TIER2COUNT * 100/$TOTAL ] 
TIER3PCT=$[ $TIER3COUNT * 100/$TOTAL ] 

else 
echo $TOTAL is null 
fi 
+0

我收到的輸出是'wc:invalid選項 - '1'嘗試'wc --help'以獲取更多信息。是空的「Tier 1」,「22」,「%」「Tier 2」,「15」,「%」「Tier 3」,「13」,「%」' –

+1

wc -1 option is not exist,not wc -1,嘗試wc -l來計數,我更新了ans。也許這可以幫助你 –

+0

這工作,這是一個「l」,而不是「1」我所使用的解決方案是錯誤的。謝謝! –

2

既不存在bash或POSIX語法,允許:

$[ integer expression ] 

假設你要分配的計算的整數結果,正確的POSIX語法爲:

TIER1PCT=$((TIER1COUNT * 100/TOTAL)) 
TIER2PCT=$((TIER2COUNT * 100/TOTAL)) 
TIER3PCT=$((TIER3COUNT * 100/TOTAL)) 

整數運算的其他選擇與letexpr。 (請注意不同的空格各自的要求)