我需要在 bash 中執行以下操作。
我有,
env = prod/abcd-ral-5645-test123
我需要檢查字串是否ral存在env,如果存在,我需要將值提取ral-5645到不同的變數。
我試圖找到如下 ral 的出現,但卡在提取文本 ral-5645
if [${env} == *"ral"* ];
then
echo "It's there."
fi
任何幫助深表感謝。
uj5u.com熱心網友回復:
關于什么:
grep -o "ral-[0-9]*" env
解釋:
[0-9]表示從 0 到 9(每個可能的數字)的任何字符。[0-9]*表示任意位數-o意思是“只顯示模式(見man grep)
uj5u.com熱心網友回復:
if [${env} == *"ral"* ];
這不起作用,因為 shell 會進行檔案名 globbing,就像您這樣做一樣ls *ral*,因此您正在查看檔案名串列(如果有匹配)或原始術語(*ral*如果沒有匹配)。
您可以在 bash 中使用正則運算式:
if [[ "$var" =~ .*ral.* ]]
then
echo "$var matches"
fi
要捕獲,請使用括號并通過BASH_REMATCH正則運算式中的組計數是陣列索引中的數字來訪問捕獲。
if [[ "$var" =~ -(ral.[0-9] )- ]]
then
echo "$var matches: ${BASH_REMATCH[1]}"
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/346504.html
標籤:猛击
