![Bashコードを理解するのに役立ちましたか? [閉鎖]](https://linux33.com/image/59686/Bash%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AB%E5%BD%B9%E7%AB%8B%E3%81%A1%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
このコードは何をしますか?
export user=$(who am i | sed -e 's/ .*//')
echo $user
egrep -i "^www-data" /etc/group >/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
group='www-data'
else
group='apache'
fi
答え1
最初の2行と残りの2つの部分で構成されています。
export user=$(who am i | sed -e 's/ .*//')
echo $user
ログインしたユーザーの名前を印刷します。この構成は、これらのトークン間のコマンド出力が何であるかを割り当て$(...)
ます。 2つの引数を使用して呼び出すと、現在ログインしているユーザーのログイン情報(構文が正確であるか完全に異なるものを使用できます)を、スペースで区切られた複数の部分からなる出力とCompositionにパイプされたコマンドとして返します。すべての内容を切り取ります。最初のスペース)。user
who
who am I
who loves popcorn
sed
egrep -i "^www-data" /etc/group >/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
group='www-data'
else
group='apache'
fi
www-dataで始まるグループ名が存在する場合は(大文字と小文字を区別しない)、group
それ以外の場合は文字列に設定されます。これは、(廃止)コマンドを使用して行の先頭()から大文字と小文字を区別せずに()を検索することによって行われます。一致するものが見つかった場合(前のコマンドの終了値の保存)はゼロであり、そのステートメントの分岐が実行され、それ以外の場合は実行されます。www-data
WWW-data
www-data-hallo
/etc/group
group
apache
egrep
grep -E
-i
www-data
^
/etc/group
$?
then
if
else
正しい名前を持つグループがあるかどうかを確認するにはwww-data
(該当する順序ではなく大文字と小文字を区別する)、次の手順を実行する必要があります。grep -e '^www-data:' /etc/group