這更關注於學習BASH而不是創建特定的代碼。在Bash中提高知識
---問題:編寫一個Bash腳本,它將計算機系統上的登錄名列表作爲命令行參數,並顯示擁有這些登錄名的用戶的這些登錄名,全名和用戶ID包含在/ etc/passwd文件中),每行一個。如果登錄名無效(在/ etc/passwd文件中找不到),請顯示登錄名和相應的錯誤消息。 ---
如果我需要創建一個代碼來滿足我能做到這一點使用這樣的「選擇」名單這個問題:
read -p "Enter choice: " ch
if [ "$ch" = "1" ]; then
function_1
else
if [ "$ch" = "2" ]; then
function_2
else
if [ "$ch" = "3" ]; then
function_3
else
if [ "$ch" = "4" ]; then
function_4
else
if [ "$ch" = "5" ]; then
function_5
fi x5
或那就要使用grep和測試完成方法,其中由用戶讀取輸入必須納入變量Name1 Name2 .... NameN並通過grep命令測試到ect/passwd文件。
#!/bin/bash
# pgroup -- first version
# Fetch the GID from /etc/group
gid=$(grep "$̂1:" /etc/group | cut -d: -f3)
# Search users with that GID in /etc/passwd
grep "^[^:]*:[^:]*:[^:]*:$gid:" /etc/passwd | cut -d: -f1`enter code here`
請用一些通用的代碼來解釋最好的。我仍在學習基礎知識並測試不同的想法。我很抱歉,如果這些是非常模糊的概念,我仍然得到BASH的掛鉤。
好的,所以檢查輸入到 - >變量名稱1(這相當於grep測試用戶輸入)但是我怎樣才能設置變量爲用戶ID前手, 我只是做一個變量,但我可能需要很多用戶ID ?如果我最終需要檢查30個用戶,我需要30個變量嗎? – Rep
您的'read'命令將用戶列表分配給變量'ch'。然後,您可以使用[this](http://stackoverflow.com/questions/918886/how-do-i-split-a-string-on-a-delimiter-in-bash)示例瞭解如何拆分字符串和循環返回值。 – FDavidov
一個補充:如果用戶列表在引號中提供,它將作爲單個參數接收,因此您需要將其拆分。如果不使用引號字符,則可以使用示例[here](http://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-bash-script)進行循環。 – FDavidov