ant*_*iks 1 bash string shell-script test
如果单词包含特定字母,我需要一个 if 语句来返回 true。例如:
var="information"
if [ $var contain "i" ]; then
....
else
...
fi
Run Code Online (Sandbox Code Playgroud)
使用 aswitch或者case像这样怎么样:
#!/bin/sh
v="information"
case $v in
*f*)
echo "found \"f\" in ${v}";;
*)
echo "no match found in ${v}"
esac
exit
Run Code Online (Sandbox Code Playgroud)
请注意,如果指针存储在变量中,那么引用它很重要,这样它就不会被视为模式:
case $haystack in
*"$needle"*) echo match
esac
Run Code Online (Sandbox Code Playgroud)
没有它,如果$needle是*或?例如,这将匹配任何干草堆(分别为非空干草堆)。
在任何情况下,$needle都不必是单个字符。它适用于任何字符串。
在许多 shell 中,它甚至适用于任何非空字节序列,即使它们不形成有效字符,但并非所有字符都会分解字符。例如,é在某些实现中,在以 UTF-8 (0xc3 0xa9) 编码的字符串中可能找不到 0xc3 字节。相反,当语言环境的编码为 BIG5-HKSCS 时,某些 shell 可能会在i内部找到?,其中?编码为 0xa3 0x69(与iASCII 一样为 0x69)。
| 归档时间: |
|
| 查看次数: |
23281 次 |
| 最近记录: |