正常な状況
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:~$
数字が同じであるかどうかを確認するにy
は10
?
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
$