2015-04-18 52 views
1

我正在編寫一個程序,輸出用戶名和用戶登錄次數,或者打印「未知用戶」。Bash:超出表達式遞歸級別(錯誤標記是...)

我的代碼如下:

iden=$1 
c='last | grep -w -c $iden' 
if (($c > 1)) 
then 
    echo "$iden $c" 
else 
    echo "Unknown user" 
fi 

,我不斷收到此錯誤:

-bash: ((: last | grep -w -c 123: expression recursion level exceeded (error token is "c 123")

回答

2

將一個命令的輸出存儲在你需要說var=$(command)一個變量。因此,使用方法:

c=$(last | grep -w -c "$iden") # always good to quote the variables 

,而不是

c='last | grep -w -c $iden' 

如果你正在學習的Bash腳本,它始終是很方便的粘貼ShellCheck你的代碼,看看你可能有問題。

+0

謝謝,它解決了我的問題! – Pedro

+0

它是否解決了您的問題,@Pedro?既然你是新來的,如果你的問題已經解決了,請不要忘記標記答案。您可以點擊答案旁邊的複選標記將其從空心切換爲綠色。如果您有任何問題,請參閱[幫助中心>提問](http://stackoverflow.com/helpcenter/someone-answers)! – fedorqui

0

你可以使用這個太:

c=`last | grep -w -c "$iden"` 
+0

反引號和'$()'是等價的,實際上''()'是最好的,因爲你可以嵌套它們。請參閱[Shell編程:$(command)和'command'之間的區別](http://stackoverflow.com/q/4708549/1983854)。 – fedorqui