2016-11-18 7 views
0

私のコードは、私のpasswdファイル内のユーザをチェックするだけです。ユーザからのコード行を必要とするコードを呼び出す方法

#!/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 

これはうまく動作し、名前で呼ぶだけです:。 problem2.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を手に入れる前に自分のpasswdファイルをチェックインしてから入力しなければならないようにするために、ユーザー名を尋ねるようにしてもらえますか? problem2.bsh(username)をチェックしてください。

+0

。 – Cyrus

答えて

0

だけの機能にそれらのproblem*.bshのファイルを作成し、同様にグローバル変数を使用します。私はは `true`で` `[真]を交換することをお勧め

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 
関連する問題