web-dev-qa-db-ja.com

$ USER!= "root"の場合、実行中のスクリプトを停止/強制終了します

私は、rootとして実行する必要があるスクリプトに取り組んでいます。そうでなければ、すべてを停止するはずです。

#!/bin/bash
validationRoot() {
    if [ $USER != 'root' ]
        then
            echo "You're not root! You can't use this script."

    fi
}
validationRoot;
echo "You're root!"

echo "You're not root! You can't use this script."の後にaddを追加して実行を停止する方法がわかりません。

4
Vlad

私はこれを次のようにしたでしょう:

#!/bin/bash
if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

Id = 0は、スーパーユーザー(またはルート)を識別するためにカーネル内で使用されるものです。


編集:STDERRにリダイレクトすることはさらに良いでしょう。


これがワンライナーです:)

(( EUID )) && echo ‘You need to be root.’ && exit 1
7
Rinzwind