在shell中如何判断字符串是否以某个字符开头
时间:2019-04-29 03:17:19 来源:igfitidea点击:
在bash shell脚本中使用while循环逐行读取配置文件,需要检查某一行是否以字符井号#开始。
那么在shell中如何检查变量是否以某个字符开头?
在bash中,我们可以使用正则 比较运算符=~来检查字符串是否以某个值开头。
下面的方法将测试bash变量是否以字符串或字符开头。
bash中如何检查一个字符串是否以某个值开始
定义一个变量
vech="Bus"
检查字符串是否以“B”开头
[[ $vech = B* ]] && echo "Start with B"
[[
用于执行条件命令。它检查$vech是否以“B”开头并且后面跟着任何字符。
将vech设置为其他值再进行测试:
vech="Car" [[ $vech = B* ]] && echo "Start with B" [[ $vech = B* ]] && echo "Start with B" || echo "Not matched"
Bash中使用if语句判断字符串是否以某个字符开头
#!/bin/bash input="xBus" if [[ $input = B* ]] then echo "Start with B" else echo "No match" fi
Bash检查变量字符串是否以井号#开头
逐行读取文件:
#!/bin/bash input="/path/to/txt/file" while IFS= read -r var do echo "$var" done < "$input"
添加检查,在bash中查看$var是否以“#”开头
#!/bin/bash input="/path/to/txt/file" while IFS= read -r var do # # 如果$var的值已井号开头,则忽略它 # [[ $var =~ ^#.* ]] && continue echo "$var" done < "$input"
如何使用regex比较运算符=~来判断字符串是否以某个字符开头
判断$var是否以“#”开头:
if [[ "$var" =~ ^#.* ]]; then echo "yes" fi
示例:
while IFS='|' read -r t u do # 忽略所有以井号#开头的配置行 [[ $t =~ ^#.* ]] && continue echo "Working on $t and $u" done < "$INPUT_FILE"
在bash中如何检查一个字符串是否以某个值开始
如果是多级判断if-then-else-fi语句,case语句是个很好的替换方案。它可以一个变量匹配多个值:
#!/bin/bash # 接受CLI参数进行测试,默认值设置为 'Bus' input="${1:-Bus}" echo -n "$input starts with 'B' : " case "$input" in B*) echo "yes";; *) echo "no";; esac