目前的變量被設置爲像這樣的字符串:如何在bash shell中將一個單詞分成多個變量?
offs3.0
,我想給分成2個變量
offs
3.0
我該怎麼辦呢?
因爲我以後會使用offs。
if ("$1"=="offs")
here $1 is offs3.0
目前的變量被設置爲像這樣的字符串:如何在bash shell中將一個單詞分成多個變量?
offs3.0
,我想給分成2個變量
offs
3.0
我該怎麼辦呢?
因爲我以後會使用offs。
if ("$1"=="offs")
here $1 is offs3.0
如果你只是想測試一個變量包含您可以使用offs
:
if [[ "$1" =~ "offs" ]]
then
# do something
fi
或者,爲了測試變量*是否以*值開始:'[[$ 1 == offs *]]' –
我想要使用此方法。但其實我找到了一個新問題。 -name「* .txt」-exec grep -H SNR {} \; | grep「$ 1」> result.txt if [[「$ 1」=〜「offs」]] 然後 #做些什麼 fi – user2862989
可以做到使用單一的sed也:
s='offs3.0'
(set -- $(sed 's/^\([a-z]*\)\(.*\)$/\1 \2/' <<< "$s") && echo "arg1=$1" "arg2=$2")
arg1=offs arg2=3.0
使用bash的正則表達式
s=offs3.0
[[ $s =~ ^([^[:digit:]]+)(.*) ]] &&
echo "${BASH_REMATCH[1]} - ${BASH_REMATCH[2]}"
offs - 3.0
或者只是使用shell的內置參數替換。
var='offs3.0'
echo "${var%%[.0-9]*}"
echo "${var##*[A-Za-z]}"
@fedorqui發佈了類似的答案,但之後被刪除。 – tripleee
是否要分割文本和數字?或者是其他東西。我們需要更多關於分割規則的信息。 – Arseniy