在bash腳本中,我需要檢查字符串$HEADER
是否以字符序列「/ *」開頭。我試圖:bash:檢查字符串是否以「/ *」開頭
if [ $(echo $HEADER | cut -c 1-2) = '/*' ]
它沒有按預期工作。看來該字符串與根目錄的文件列表進行比較。
如何保護字符/和*以從shell中解釋?
用反斜槓保護字符也不起作用。
在bash腳本中,我需要檢查字符串$HEADER
是否以字符序列「/ *」開頭。我試圖:bash:檢查字符串是否以「/ *」開頭
if [ $(echo $HEADER | cut -c 1-2) = '/*' ]
它沒有按預期工作。看來該字符串與根目錄的文件列表進行比較。
如何保護字符/和*以從shell中解釋?
用反斜槓保護字符也不起作用。
問題是命令替換的結果受制於文件名稱生成。您需要引用即,以及$HEADER
在命令替換中的擴展。
if [ "$(echo "$HEADER" | cut -c 1-2)" = '/*' ]
由於使用bash
,使用[[
命令(其可以執行圖案匹配)是一種出色的解決方案,雖然,as Jahid has already answered。
if [[ $HEADER = '/*'* ]]
這應該工作:
if [[ $HEADER = '/*'* ]]
另一個解決方案是:
if [ "${HEADER:0:2}" = '/*' ]
或者
if [[ "${HEADER:0:2}" = '/*' ]]
這應該有助於
if [[ $(echo $HEADER | grep -E '^\/\*' | wc -l) -gt 0 ]]
你已經有一些解決方案,但
[ "${HEADER#/\*}" != "${HEADER}" ]
作品與POSIX shells無需使用外部工具(不包括[
)或bash化。
有趣的是,這種方法從標記的副本中丟失。