スペースで区切られた複数の値を含む変数の各値を比較します。

スペースで区切られた複数の値を含む変数の各値を比較します。

正常な状況

wolf@linux:~$ x='10'
wolf@linux:~$ if [[ "$x" -eq 10 ]]; then echo True; else echo False; fi
True
wolf@linux:~$ 

y私の質問は、この2つの値があると仮定することです。

wolf@linux:~$ y=' 10
>   10'
wolf@linux:~$ 

数字が同じであるかどうかを確認するにy10

wolf@linux:~$ if [[ "$y" -eq 10 ]]; then echo True; else echo False; fi
bash: [[: 10
  10: syntax error in expression (error token is "10")
False
wolf@linux:~$ 

可能ですか?そうでなければ、正しいアプローチは何ですか?

p/s - 申し訳ありません。この質問の正確なタイトルが何であるかよくわかりません。後で変更されます(または必要と思われる場合は変更してください)。

x='10'
y=' 10
   10'
   
if [[ "$x" -eq 10 ]]; then echo True; else echo False; fi
if [[ "$y" -eq 10 ]]; then echo True; else echo False; fi

ベストアンサー1

これら2つの値は実際には異なります。yと同じではありません10

x='10'
y=' 10
   10'

これが出力に False が表示される理由です。これら2つの変数をエコーし​​て実際の値を確認してください。

$ echo $y
10 10
$ echo "$y"
 10
   10
$ 

Trueに設定するには、alexxsが共有するコードを試してください。

for var in $y; do [ "$var" = 10 ] && echo "y=$var true" || echo "y=$var false"; done

サンプル出力

$ for var in $y; do [ "$var" = 10 ] && echo "y=$var true" || echo "y=$var false"; done
y=10 true
y=10 true
$ 

または、これを実行したり、ファイルに保存したり、端末で直接実行したりできます。

for var in $y; do
 if [[ "$var" = 10 ]]; then
  echo "y=$var True"
 else
  echo "y=$var False"
 fi
done

サンプル出力

$ for var in $y; do
>  if [[ "$var" = 10 ]]; then
>   echo "y=$var True"
>  else
>   echo "y=$var False"
>  fi
> done
y=10 True
y=10 True
$ 

おすすめ記事