Bash
如果語句錯誤參數過多,則 Bash 使用者輸入搜尋伺服器上的使用者
我正在處理一項要求我接受使用者輸入以在伺服器上搜尋目前使用者的任務,如果使用者輸入線上,我需要輸出使用者名。如果使用者沒有登錄,我需要做出相應的回應。我已經研究這個程式碼好幾天了,似乎無法弄清楚。我可以搜尋使用者,但是在將我的使用者輸入變數字元串與保存登錄使用者名的變數字元串進行比較時,我不斷收到一個錯誤,說明參數太多。請在下面查看我的程式碼:
#!/bin/bash read -p "Please enter the user name you would like to search: " userName name=$(who | grep "${userName}" | awk '{print $1}'); if [ [ $name == *"$userName"* ] ]; then echo $name else printf "That user is not logged in.\n"; fi
你很接近,但主要問題是 bash
[[ ]]
構造不能在括號之間有空格。它認為您正在嘗試執行多個[
命令,即 POSIXtest
命令。如果您修復它,它可以工作,但如果使用者打開了多個 tty,則會為每個 tty 列印一次。如果你想使用grep
,你可以這樣做:#!/bin/bash read -p "Please enter the user name you would like to search: " userName if who | awk '{print $1}' | grep -wq "$userName" then echo "$userName is logged in." else echo "That user is not logged in."; fi exit