1

これは私のルートチェックコードです。合格しない場合は、rootが必要なため、スクリプトを実行しないでください。ここで何が問題になっているのかわからない:

if [ "whoami &2>/dev/null" != "root" ] && [ "id -un &2>/dev/null" != "root" ] ; then
    $BIN_ECHO " must be root to run this script "
    exit 1
else
    $BIN_ECHO -e " permission check passed "
fi

実行した後、私は取得します:

must be root to run this script
[root@localhost ~]# whoami
root
[root@localhost ~]# id -un
root
4

3 に答える 3

8

「whoami」は文字列です。

`whoami`はコマンドの出力です。

于 2012-10-08T19:21:53.537 に答える
3

コマンドを含む文字列を「root」と比較しています。これはあなたが望むものではありません

if [ "$(whoami &2>/dev/null)" != "root" ] && ...
于 2012-10-08T19:16:38.970 に答える
2

"whoami &2>/dev/null""id -un &2>/dev/null"単なる文字列であり、コマンドを実行していません。代わりに:"$(whoami &2>/dev/null)"とを使用してください。"$(id -un &2>/dev/null)"

于 2012-10-08T19:16:15.023 に答える