bash中不区分大小写的字符串比较

jja*_*obs 5 bash string-comparison

以下行删除变量前的前导文本 $PRECEDING

temp2=${content#$PRECEDING}
Run Code Online (Sandbox Code Playgroud)

但现在我希望它$PRECEDING不区分大小写.这适用sedI标志.但我无法弄清楚整个cmd.

Rio*_*iot 6

无需打电话给sed或使用shopt.这是最简单快捷的方法(只要你有Bash 4):

if [ "${var1,,}" = "${var2,,}" ]; then
  echo "matched"
fi
Run Code Online (Sandbox Code Playgroud)

你所做的就是将两个字符串转换为小写并比较结果.


sam*_*hen 4

执行此操作的一种方法:

temp2=$(sed -e "s/^.*$PRECEDING//I" <<< "$content")
Run Code Online (Sandbox Code Playgroud)

解释:

  • ^.*$PRECEDING:^表示字符串的开头,.表示任何字符,.*表示任何字符零次或多次。因此,这意味着“匹配从字符串开头开始的任何模式,后跟(并包括)存储在$PRECEDING.
  • I部分表示不区分大小写,该g部分(如果您使用它)表示“匹配所有出现的情况”而不仅仅是第一个。
  • <<<符号适用于此处的字符串,因此您可以保存一个echo.