Joh*_*lla 1288
if [ "$x" = "valid" ]; then
echo "x has the value 'valid'"
fi
Run Code Online (Sandbox Code Playgroud)
如果您想在不匹配时执行某些操作,请替换=为!=.您可以在各自的文档中阅读有关字符串操作和算术运算的更多信息.
$x?你想要引号$x,因为如果它是空的,你的bash脚本遇到语法错误,如下所示:
if [ = "valid" ]; then
Run Code Online (Sandbox Code Playgroud)
==运营商注意,bash允许==用于相等[,但这不是标准.
使用第一种情况,其中引号$x是可选的:
if [[ "$x" == "valid" ]]; then
Run Code Online (Sandbox Code Playgroud)
或使用第二种情况:
if [ "$x" = "valid" ]; then
Run Code Online (Sandbox Code Playgroud)
Mar*_*rko 132
或者,如果您不需要else子句:
[ "$x" == "valid" ] && echo "x has the value 'valid'"
Run Code Online (Sandbox Code Playgroud)
Gur*_*uru 71
a="abc"
b="def"
# Equality Comparison
if [ "$a" == "$b" ]; then
echo "Strings match"
else
echo "Strings don't match"
fi
# Lexicographic (greater than, less than) comparison.
if [ "$a" \< "$b" ]; then
echo "$a is lexicographically smaller then $b"
elif [ "$a" \> "$b" ]; then
echo "$b is lexicographically smaller than $a"
else
echo "Strings are equal"
fi
Run Code Online (Sandbox Code Playgroud)
笔记:
if和[和]是重要的>并且<是重定向操作符因此与逃避它\>,并\<分别用于字符串.Jef*_*rts 59
要使用通配符比较字符串
if [[ "$stringA" == *$stringB* ]]; then
# Do something here
else
# Do Something here
fi
Run Code Online (Sandbox Code Playgroud)
Vol*_*gel 33
我不得不在一点上不同意其中一条评论:
[ "$x" == "valid" ] && echo "valid" || echo "invalid"
Run Code Online (Sandbox Code Playgroud)
它只是看起来像一个,嗯,没有经验......
它在某种程度上使用常见的模式作为语言;
在你学会了这门语言之后.
它是一个简单的逻辑表达式,有一个特殊部分:逻辑运算符的惰性求值.
[ "$x" == "valid" ] && echo "valid" || echo "invalid"
Run Code Online (Sandbox Code Playgroud)
每个部分都是一个逻辑表达; 第一个可能是真或假,另外两个总是如此.
(
[ "$x" == "valid" ]
&&
echo "valid"
)
||
echo "invalid"
Run Code Online (Sandbox Code Playgroud)
现在,在评估时,检查第一个.如果是假的,比逻辑的第二个操作数和 &&之后是不相关的.第一个不是真的,所以它不可能是第一个和第二个是真的,无论如何.
现在,在这种情况下是逻辑的第一面 或 ||假,但如果另一面 - 第三部分 - 是真的,则可能是真的.
所以第三部分将被评估 - 主要是将信息写成副作用.(它的结果0为true,我们这里不使用)
其他情况类似,但更简单 - 而且 - 我保证!是 - 可以 - 易于阅读!
(我没有,但我认为作为一名灰白胡子的UNIX老手对此有很大的帮助.)
gho*_*g74 20
你也可以使用用例/ esac
case "$string" in
"$pattern" ) echo "found";;
esac
Run Code Online (Sandbox Code Playgroud)
小智 15
以下脚本逐行从名为"testonthis"的文件中读取,然后将每行与一个简单的字符串,一个带有特殊字符的字符串和一个正则表达式(如果它不匹配)进行比较,那么脚本将打印该行而不是.
bash中的空间非常重要.所以下面的工作
[ "$LINE" != "table_name" ]
Run Code Online (Sandbox Code Playgroud)
但是以下不会:
["$LINE" != "table_name"]
Run Code Online (Sandbox Code Playgroud)
所以请按原样使用:
cat testonthis | while read LINE
do
if [ "$LINE" != "table_name" ] && [ "$LINE" != "--------------------------------" ] && [[ "$LINE" =~ [^[:space:]] ]] && [[ "$LINE" != SQL* ]]; then
echo $LINE
fi
done
Run Code Online (Sandbox Code Playgroud)
ste*_*cat 11
如果输入只有几个有效的条目,我可能会使用regexp匹配.例如,只有"开始"和"停止"才是有效的动作.
if [[ "${ACTION,,}" =~ ^(start|stop)$ ]]; then
echo "valid action"
fi
Run Code Online (Sandbox Code Playgroud)
请注意,我$ACTION使用双逗号来小写变量.另请注意,这对于太老的bash版本不起作用.
Bash4 +示例.注意:当单词包含空格等时,不使用引号会导致问题.总是引用bash IMO.
以下是BASH4 +的一些示例:
例1,检查字符串中的"是"(不区分大小写):
if [[ "${str,,}" == *"yes"* ]] ;then
Run Code Online (Sandbox Code Playgroud)
例2,检查字符串中的"是"(不区分大小写):
if [[ "$(echo "$str" | tr '[:upper:]' '[:lower:]')" == *"yes"* ]] ;then
Run Code Online (Sandbox Code Playgroud)
例3,检查字符串中的"是"(区分大小写):
if [[ "${str}" == *"yes"* ]] ;then
Run Code Online (Sandbox Code Playgroud)
例4,检查字符串中的"是"(区分大小写):
if [[ "${str}" =~ "yes" ]] ;then
Run Code Online (Sandbox Code Playgroud)
例5,完全匹配(区分大小写):
if [[ "${str}" == "yes" ]] ;then
Run Code Online (Sandbox Code Playgroud)
例6,完全匹配(不区分大小写):
if [[ "${str,,}" == "yes" ]] ;then
Run Code Online (Sandbox Code Playgroud)
例7,完全匹配:
if [ "$a" = "$b" ] ;then
Run Code Online (Sandbox Code Playgroud)
请享用.
| 归档时间: |
|
| 查看次数: |
1142444 次 |
| 最近记录: |