read -p "What is your name?:" ANSWER
if ["$ANSWER" == "root"]
then
echo "Hello, administrator"
else
echo "Hello, $ANSWER"
fi
コンソールで「root」と答えると、「Hello Admin」が表示されると仮定しますが、常に2番目のケースが表示されます。私は何が間違っていましたか? [また、"$ANSWER" = "myname"のような他のif条件を試しましたが、まだ動作しません。] よろしくお願いします!
ベストアンサー1
コードに構文の問題があります。テスト[
の前後にスペースが必要です。]
read -p "What is your name?:" ANSWER
if [ "$ANSWER" == "root" ]; then
echo 'Hello, administrator'
else
printf 'Hello, %s\n' "$ANSWER"
fi
id
また、このユーティリティを使用してユーザーのUIDを取得することもできます。 root ユーザーの UID は常に 0 です。
if [ "$(id -u)" -eq 0 ]; then
echo 'Hello, administrator'
else
printf 'Hello, %s\n' "$(id -u -n)"
fi
id -u
現在のユーザーのUIDが正の整数で返され、id -u -n
ユーザー名が返されます。ユーザー名を使用$USER
または印刷することもできますが、$LOGNAME
比較時にUID(数値)を使用する方が安全です。
シェルはbash
現在のユーザーのUIDをに保存するため、$UID
次bash
のものを作成できます。
if [ "$UID" -eq 0 ]; then
echo 'Hello, administrator'
else
printf 'Hello, %s\n' "$USER"
fi