我需要在位置参数$ 1中添加两个数字,它们之间有一个短划线,即“15-20”。它是15到20之间的间隔,它必须是一个位置参数。我这样做了:
#!/bin/sh
a=$(echo "$1" | sed 's/-/ /g')
echo $a
它打印: 15 20 我将来需要这个作为一个区间,所以我必须把这些数字作为一个单独的变量。而不是a = 15 20,它应该是a = 15和b = 20.我怎样才能实现这个目标?
答案 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"