Bash

驗證主目錄的腳本

  • October 29, 2018

我想編寫一個簡單的 Bash 腳本,當使用實際使用者名作為參數時顯示使用者主目錄的路徑,並在使用此系統上不存在的使用者名時顯示使用者未找到或其他內容作為論據。

這需要一個函式嗎?這可以通過在腳本文件中使用基本的 GNU 兼容命令來完成嗎?

read -p "Enter a username: " username
if getent passwd "$username" > /dev/null
then
 printf "Their home directory is: %s\n" "$(getent passwd "$username" | cut -d: -f6)"
else
 printf "User not found!\n" >&2
fi
#!/bin/sh

username=$1

if ! getent passwd "$username" >/dev/null 2>&1; then
   printf 'User %s does not exist\n' "$username"
   exit 1
fi

homedir=$( getent passwd "$username" | cut -d: -f6 )

if [ -n "$homedir" ]; then
   if [ -d "$homedir" ]; then
       printf 'User %s has a valid (existing) home directory: %s\n' "$username" "$homedir"
   else
       printf 'User %s lacks a valid (existing) home directory: %s\n' "$username" "$homedir"
   fi
else
   printf 'User %s has no home directory\n' "$username"
fi

該腳本從命令行獲取使用者名:

$ ./script.sh kk
User kk has a valid (existing) home directory: /home/kk

$ ./script.sh nobody
User nobody lacks a valid (existing) home directory: /nonexistent

$ ./script.sh aoae
User aoae does not exist

引用自:https://unix.stackexchange.com/questions/453686