在 Shell Script 想检查系统帐号是否存在, 可以用 grep 搜索 /etc/passwd 的内容达成, 指令是这样:
|
1 |
$ grep -i "^useraccount:" /etc/passwd |
以上指令会检查 /etc/passwd 档案内, 是否有 “useraccount” 这个帐号存在, 其中 “^” 表示指定前面没有任何字符, 而 “:” 则是在 /etc/passwd 用作分开每个字段的分隔字符。
上面指令执行后, 如果帐号不存在, 不会回传任何内容, 如果帐号存在, 则会回传在 /etc/passwd 的相关纪录, 例如:
useraccount:x:1001:1001::/home/useraccount:/bin/bash
要将上面的功能放到 Shell Script, 可以这样写:
|
1 2 3 4 5 6 7 8 9 |
#!/bin/sh grep -i "^useraccount:" /etc/passwd >/dev/null 2>&1; if [ $? -eq 0 ]; then echo "Username Exists" else echo "Invalid Username" fi |
第 3 行用了上面的 grep 指令, “>/dev/null 2>&1;” 是为了即使有匹配的行也不印出。第 5 行看到 $? 变量, 这个变量会储存上一个执行的指令的 exit 0, grep 找到匹配纪录的 exit code 是 0, 所以只要检查 $? 是否 0, 便知道帐号是否存在。