2016-11-18 52 views
0

我的代碼只是檢查我的密碼文件中的用戶。如何調用需要用戶代碼的代碼

#!/bin/bash 

ret=false 
getent passwd "$1" >/dev/null 2>&1 && ret=true 

if $ret; then 
    echo "yes the user exists" 
else 
    echo "No, the user does not exist" 
fi 

它工作正常,你只需按名稱:。問題2.bsh(用戶名),它測試用戶是否在我的passwd文件。工作正常。但是我想把它和其他2個代碼放在一個方法中,讓我可以選擇調用它。 例如:

while [true] 
do 
    case $option in 
    a) . problem1.bsh 
    ;; 
    b) . problem2.bsh 
    ;; 
    c) . problem3.bsh 
    ;; 
    x) break 
    ;; 
    *) echo "invalid input" 
esac 
done 

選項A和C,做工精細關於調用問題1和3,但由於某種原因,問題2不返回任何東西。 有沒有辦法讓問題2請求用戶名在我的密碼文件之前檢查並運行,而不是必須輸入。問題2.bsh(用戶名)爲它檢查。

+0

我建議更換'[真]''通過TRUE'。 – Cyrus

回答

0

只是讓那些problem*.bsh文件到功能和使用全局變量,如:

problem1() { echo $user ... ; } 
problem2() { getent passwd "$user" ; } 
problem3() { echo ... "$user" ; } 
user=$1 
while true 
do printf 'option [abcx]? ' 
read -r 
case $REPLY in 
    a) problem1 ;; 
    b) problem2 ;; 
    c) problem3 ;; 
    x) break ;; 
    *) echo "invalid input" ;; 
esac 
done