Bash
如果單詞包含特定字母,則 IF 語句返回 true
如果單詞包含特定字母,我需要一個 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