1. ホーム
  2. bash

[解決済み] シェルスクリプトで文字列が空でもスペースでもないことをチェックする

2022-07-28 13:19:03

質問

以下のシェルスクリプトを実行して、文字列がスペースでも空でもないことを確認しようとしています。しかし、私はすべての3つの言及された文字列のために同じ出力を得ています。私は "[[" 構文も使用してみましたが、無駄でした。

以下は私のコードです。

str="Hello World"
str2=" "
str3=""

if [ ! -z "$str" -a "$str"!=" " ]; then
        echo "Str is not null or space"
fi

if [ ! -z "$str2" -a "$str2"!=" " ]; then
        echo "Str2 is not null or space"
fi

if [ ! -z "$str3" -a "$str3"!=" " ]; then
        echo "Str3 is not null or space"
fi

以下のような出力が得られています。

# ./checkCond.sh 
Str is not null or space
Str2 is not null or space

どのように解決するのですか?

の両脇にスペースが必要です。 != . コードを次のように変更してください。

str="Hello World"
str2=" "
str3=""

if [ ! -z "$str" -a "$str" != " " ]; then
        echo "Str is not null or space"
fi

if [ ! -z "$str2" -a "$str2" != " " ]; then
        echo "Str2 is not null or space"
fi

if [ ! -z "$str3" -a "$str3" != " " ]; then
        echo "Str3 is not null or space"
fi