
このコードは何をするのでしょうか?
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 つの引数で呼び出すと、現在ログインしているユーザーのログイン情報が返されます (たとえば、構文的に正しい を使用することも、 のように完全に異なる を使用することもできます)。 の出力は、スペースで区切られた複数の部分で構成され、パイプされるコマンドは、最初のスペースの後のすべてをカットします。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
設定され、ない場合は が文字列 に設定されます。これは、 (非推奨の を使用する必要があります) コマンドを使用して、 内の行の先頭 ( )で大文字と小文字を区別しない ( )を検索することで行われます。一致するものが見つかった場合は、(前のコマンドの終了値を保持) は 0 になり、ステートメントからの分岐が実行されます。それ以外の場合は、分岐が実行されます。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