次のbashスクリプトがあります。
#!/bin/bash -e
egrep "^username" /etc/passwd >/dev/null
if[ $? -eq 0 ]
then
echo "doesn't exist"
fi
このスクリプトは、-eなしでは実行されません。-eこのスクリプトでは何ができますか?また、$?このコンテキストでは何をしますか?
@pst:はに
—
グレッグヒューギル
-e文書化されていsetます。
これを行うことにより、スクリプトを簡素化できます
—
。– bollovan
if egrep -q "^username" /etc/passwd ; then echo "doesn't exist" ; fi
ifとの間にスペースがありません[。このスクリプトは動作しませんで -eあればあるため、grep下その後、何も見つからない-eスクリプトがすぐそこに終了します。がなければ-e、メッセージが逆方向に表示されます。ステータス($?)が0の場合、grepがユーザーを見つけたことを意味します。ちなみに、これは `grep '^ username:'である必要があります(より長い名前の別のユーザーがいる場合はどうなりますか?)。
ウィル
—
14年
#/bin/bash -eと同じ効果を持つ#/bin/bashライン#1にし、set -eライン#2に?
-eマニュアルページにはありません(これに答えるアドレスを見たいです)。$?最後の終了コード(egrep上記で生成されたプロセスの終了コード)が含まれます。