簡體   English   中英

在Bash腳本中比較變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM