[英]Comparing variables in a Bash script
在查看其他Bash腳本時,我看到人們在比較變量,例如: $S == $T
而在其他時候,我看到變量被包裝在字符串中: "$S" == "$T"
。
一些實驗似乎表明兩者都做同樣的事情。 在兩種情況下,下面的演示都將打印equal
(使用GNU bash,版本4.2.37測試):
#!/usr/bin/env bash
S="text"
T="text"
if [[ $S == $T ]]; then
echo "equal"
fi
if [[ "$S" == "$T" ]]; then
echo "equal"
fi
我的問題: $S == $T
和"$S" == "$T"
之間有區別嗎?
如果您使用[[
它們幾乎相同,但不完全相同...
當使用==和!=運算符時,運算符右邊的字符串被視為一種模式,並根據以下“模式匹配”下所述的規則進行匹配。 [...]模式的任何部分都可以加引號,以強制將其作為字符串進行匹配。
如果使用[
則必須使用引號,除非您知道變量不能為空或包含空格。
為了安全起見,您可能想一直引用所有變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.