私は、スクリプトの引数でユーザ名をチェックし、関連する行を/ etc/passwdファイルと/ etc/groupファイルから出力するbashスクリプトで作業しようとしています(/ etc /シャドーファイル)。現在、私はif then elseループを利用して/ etc/*ディレクトリの内容をチェックし、関連する情報を出力しています。私の意図は、一致するユーザーが2つのファイルに見つからない場合には単純なテキスト行を出力することであり、したがってNULL値です。しかし、それは私が探しているもののために完全に間違っている情報を出力しています。BASHへの新しいユーザーとして、そしてLinuxは一般的です、私はすぐにいくつかの目障りな問題があると確信しています。しかし、私は学びたいと思っています。BASH grepスクリプト
私のスクリプトのコードや正しい方向のポイントに関する助けをいただければ幸いです。ありがとうございました。
#! /bin/bash
USERLOOK='grep -h $USERID ~/etc/* | grep :x:'
grep $1 ~/etc/*
if [ -z $1 ]; then
echo "User not found."
else
echo "$USERLOOK"
fi
exit 0
質問は明確ではありませんか? './script user_to_check'と言うスクリプトの引数としてユーザ名を入力しますか? – sjsam
[引用](http://mywiki.wooledge.org/BashGuide/Practices#Quoting)と[コマンド置換](http://mywiki.wooledge.org/CommandSubstitution)を読んでください。 –
@sjsamはい、私が入力するスクリプト機能を持っていたいと思います./script user_to_check。ユーザー名が見つかった場合は、見つかった行をすべて出力したい、それはgrepを使用する理由です。しかし、ユーザー名が見つからなかった場合、私はそれをエコーしたかったのです。 – NewBashUser226