条件付き構成構文の問題 - 角かっこまたは丸括弧

条件付き構成構文の問題 - 角かっこまたは丸括弧

私はDebianシステム8.6で基本的なBashスクリプトを学んでいます。条件付き構文を作成する方法を示す本の例を読みました。以下にしておきます:

#!/bin/bash
#Filname: CondConst.sh

if [$UID -ne 0]; then
        echo "Non root User."
else
        echo "Root User."
fi

このコードを含むスクリプトを実行すると、次のエラーメッセージと結果が表示されます。

[1000: command not found
Root User.

私はいくつかの方法(引用符とスペースを使用)でコードを修正しましたが、比較のために角かっこ構文の使用方法を理解できませんでした。私は次のような他の構文を使用してこの問題を解決しました。

#!/bin/bash
#Filname: CondConst.sh

if (($UID!=0)); then
        echo "Non root User."
else
        echo "Root User."
fi

可能であれば、なぜ角かっこを使用できないのかを説明できますか?

本当にありがとうございました。

答え1

あなたのエラーは後ろにスペースを入れていないので、[コマンドとして扱われますので、[1000スペースを入れてください。

#!/bin/bash
#Filname: CondConst.sh

if [ $UID -ne 0 ]; then
        echo "Non root User."
else
        echo "Root User."
fi

関連情報