我必須使用作為引數給出的名稱列印有關用戶的資訊。例如讓我們說
./script1.sh 約翰應該給我
John Doe(用戶名)-上次登錄-
我想我做到了,但我還必須檢查多個引數,例如
./script1.sh John Jane Etrjk
John Doe(用戶名)-上次登錄-
Jane Doe(用戶名)-上次登錄
未找到 Etrjk
而且我不知道如何在我的腳本中使用多個引數這是我的腳本到目前為止(適用于 1 個引數):
if [ -z "$1 ]
then
echo "no arguments"
exit
fi
var = $1
if grep -q "$1" /etc/passwd
then
echo "FOUND"
awk 'BEGIN {FS = ":" }; /'$1'/ {print $5,$1}' /etc/passwd
var2=$(awk 'BEGIN {FS = ":" }; /'$1'/ {print $1}' /etc/passwd
lastlog -u $var2 | awk 'NR==2 {print $4,$5,$6}'
else
echo "not found"
fi
uj5u.com熱心網友回復:
你會做:
for name in "$@"; do
...
done
外殼允許簡寫for name do迭代位置引數。我更喜歡明確說明。
將引數傳遞給 awk 的安全方法是使用以下-v選項:
username=$(awk -v name="$name" 'BEGIN {FS = ":" }; $0 ~ name {print $1}' /etc/passwd)
我建議你養成使用有意義的變數名的習慣。它將幫助正在閱讀您的代碼的任何人(包括您)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/476686.html
上一篇:如何在Linux中使用sed將“.net”替換為空格?
下一篇:如何包含更多變數以顯示和隱藏圖示
