如何从一个位置参数制作两个变量?

时间:2016-05-29 13:11:48

标签: shell unix

我需要在位置参数$ 1中添加两个数字,它们之间有一个短划线,即“15-20”。它是15到20之间的间隔,它必须是一个位置参数。我这样做了:

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

它打印:      15 20 我将来需要这个作为一个区间,所以我必须把这些数字作为一个单独的变量。而不是a = 15 20,它应该是a = 15和b = 20.我怎样才能实现这个目标?

2 个答案:

答案 0 :(得分:4)

使用/bin/sh,使用read和此处的文档。

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

或者,使用参数扩展两次来删除前缀/后缀。

a=${1%-*}
b=${1#*-}

答案 1 :(得分: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"