2016-05-29 46 views
3

我需要將兩個數字添加到位置參數$ 1,並在它們之間有一個破折號,即「15-20」。它是從15到20的間隔,它必須是一個位置參數。我這樣做:如何從一個位置參數創建兩個變量?

#!/bin/sh 
a=$(echo "$1" | sed 's/-/ /g') 
echo $a 

它打印: 所以我得把這些數字作爲一個單獨的變量,我需要這在將來的間隔。而不是= 15 20,它應該是a = 15和b = 20。我怎麼能做到這一點?

+0

爲什麼它必須是一個參數?您可以控制腳本,並且可以根據需要重新構造參數。將腳本的第一行設置爲$ {@ // - /}',並將包含連字符的所有參數分成兩個(或更多)參數。試驗一下吧! –

回答

3

使用bash你可以使用進程替換:

read a b < <(echo "$1" | sed 's/-/ /g') 

# and check values 
declare -p a b 
declare -- a="15" 
declare -- b="20" 

由於從@chepner樂於助人的註釋下,你甚至不需要sed。您可以使用閱讀使用自定義IFS兩個變量:

IFS=- read a b <<< "$1" 
+1

'IFS = - 讀取一個b <<<「$ 1」'更簡單。 – chepner

+0

啊,這是正確的,我們甚至不需要'sed'(編輯) – anubhava

4

隨着/bin/sh,使用read和這裏的文件。

IFS=- read a b <<EOF 
$1 
EOF 

或者,使用參數擴展兩次刪除前綴/後綴。

a=${1%-*} 
b=${1#*-} 
相關問題