我試圖從文件中檢索內存值,並將其與參考值進行比較。但一次一件事...... 我試圖使用set/source/grep/substring變量,但他們沒有實際工作。然後我找到了一種使用for循環的方法(請參閱代碼)。 問題:我正在從文件接收整個字符串,但我無法設法擺脫它中的最後一個字符。從文件中提取字符串後從文件中捕獲它
#!/bin/bash
#source start_params.properties
#mem_val= "$default.default.minmaxmemory.main"
#mem_val= grep "default.default.minmaxmemory.main" start_params.properties
for mLine in $(grep 'default.default.minmaxmemory.main' start_params.properties)
do
echo "$mLine"
done
echo "${mLine:4:5}" # didn't get rid of the last `m` in `-max4095m`
v1="max"
v2="m"
echo "$mLine" | sed -e "s/.*${v1}//;s/${v2}.*//" #this echo the right value.
循環迭代兩次:第一次 輸出:default.default.minmaxmemory.main=-min512m
第二輸出:-max4096m
然後sed命令輸出爲4096
,但我怎麼可以更改代碼的最後一行S.T.它會將該值存儲在變量中?
謝謝你的建議,
使用命令替換:'v = $(echo「$ mLine」| sed -e「s /.*$ {v1} //; s/$ {v2}。* //」)'。替代方法:如果您只需要清除非數字字符,請使用:'v = $(tr -dC'[:digit:]'<<<「$ mLine」)''。 – mklement0
@mklement太好了!非常感謝,我使用了後者。 –
不客氣。這裏有一個bash備忘單可能會派上用場:http://mywiki.wooledge.org/BashSheet – mklement0