Bash

如果單詞包含特定字母,則 IF 語句返回 true

  • June 5, 2017

如果單詞包含特定字母,我需要一個 if 語句來返回 true。例如:

var="information"
if [ $var contain "i" ]; then
....
else
...
fi

使用一個switch或類似的東西怎麼case樣:

#!/bin/sh

v="information"
case $v in
   *f*)
       echo "found \"f\" in ${v}";;
   *)
       echo "no match found in ${v}"
esac
exit

請注意,如果 needle 儲存在變數中,則引用它很重要,因此它不會被視為模式:

case $haystack in
 *"$needle"*) echo match
esac

沒有它,如果$needle*?例如,它將匹配任何干草堆(以及分別為非空乾草堆)。

無論如何,$needle不必是單個字元。它適用於任何字元串。

在許多 shell 中,它甚至適用於任何非空字節序列,即使它們不構成有效字元,但並非所有字元都會分解字元。例如,在某些實現中,可能無法在é以 UTF-8 (0xc3 0xa9) 編碼的字元串中找到 0xc3 字節。相反,當語言環境的編碼為 BIG5-HKSCS 時,某些 shell 可能會i在其中找到,其中編碼為 0xa3 0x69(並且在 ASCII 中為 0x69)。ξ``ξ``i

引用自:https://unix.stackexchange.com/questions/368960