Bash检查字符串是否以#等字符开头
时间:2020-01-09 10:37:19 来源:igfitidea点击:
我的bash shell脚本使用bash while循环逐行读取配置文件。
我需要检查$var中存储的字符串是否以某些值开头,例如#字符。
如果是这样,我需要忽略该值并从我的配置文件中读取下一行。
如何检查在Linux或类似Unix的操作系统上运行的bash shell脚本中,变量是否以#开头?
说明:在bash中,我们可以使用正则表达式比较运算符=~
检查字符串是否以某个值开头。
可以使用以下任何一种方法有效地测试bash变量以bash中的字符串或字符开头。
如何检查字符串是否以bash中的某些值开头
让我们定义一个称为vech的shell变量,如下所示:
vech="Bus"
要检查存储在$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语句检查字符串是否以字符开头
if..else..fi允许根据命令的成功或失败进行选择:
#!/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"
让我们添加检查以查看$var是否在bash中以#开头:
#!/bin/bash input="/path/to/txt/file" while IFS= read -r var do # # if value of $var starts with #, ignore it # [[ $var =~ ^#.* ]] && continue echo "$var" done < "$input"
Continue语句将继续封闭while循环的下一次迭代,因此当找到注释行时,它将跳过其余命令。
如何使用正则表达式比较运算符=〜如果字符串以字符开头
语法如下,以查看$var是否以#开头:
if [[ "$var" =~ ^#.* ]]; then echo "yes" fi
因此,以下是更新版本:
while IFS='|' read -r t u do # ignore all config line starting with '#' [[ $t =~ ^#.* ]] && continue echo "Working on $t and $u" done < "$INPUT_FILE"
如何检查字符串是否以bash中的某些值开头
用case语句代替多层if-then-else-fi语句是不错的选择。
它使您可以将多个值与一个变量进行匹配。
读和写比较容易:
#!/bin/bash # set default to 'Bus' but accept the CLI arg for testing input="${1:-Bus}" echo -n "$input starts with 'B' : " case "$input" in B*) echo "yes";; *) echo "no";; esac