在bash脚本中,我需要检查字符串$HEADER
是否以字符序列"/*"开头。我尝试了以下方法:
if [ $(echo $HEADER | cut -c 1-2) = '/*' ]
这个功能没有按预期工作。似乎将字符串与根目录的文件列表进行比较。
我该如何保护字符 / 和 * 以避免被Shell解释?
使用反斜杠来保护字符也无法生效。
这应该可以正常工作:
if [[ $HEADER = '/*'* ]]
另一个解决方案是:
if [ "${HEADER:0:2}" = '/*' ]
或者
if [[ "${HEADER:0:2}" = '/*' ]]
$HEADER
的扩展。if [ "$(echo "$HEADER" | cut -c 1-2)" = '/*' ]
由于您正在使用 bash
,因此使用 [[
命令(可以执行模式匹配)是一种更优秀的解决方案,正如 Jahid 已经回答的那样(链接)。
if [[ $HEADER = '/*'* ]]
这应该有所帮助
if [[ $(echo $HEADER | grep -E '^\/\*' | wc -l) -gt 0 ]]
你已经有一些解决方案了,但是
[ "${HEADER#/\*}" != "${HEADER}" ]
不使用外部工具(不包括[
)或bashisms,即可与 POSIX shells配合使用。
有趣的是,这种方法在标记的重复内容中缺失。