第N个字是否有变量直到结束?
例如./script One Two Three
:
$1
是一个,$2-
是两个三.这可能吗?
编辑1:为了更详细地解释我在运行示例的命令./script 01-JAN-14 02-JAN-14 site
,其中site
可以是多个字(但一直没有起来,直到这点,这样$3
已经足够了中script
).
编辑2:我运行./script date1 date2 site
运行SQL查询,使用传递给它的变量,WHERE date BETWEEN '$1' AND '$2'
然后AND site = '${@: -3}'
.这是正确的,因为它不再适用于单个单词site
或多个单词.
它可以在bash中使用,例如"${@: -3:1}"
,将参数变量切片,就好像它是一个数组一样.
$ set -- one two three four five six seven eight nine ten
$ echo "$@"
one two three four five six seven eight nine ten
$ n=-4
$ echo "${@:$n:1}"
seven
Run Code Online (Sandbox Code Playgroud)
:
使用文字整数时,必须使用负号和负号之间的空格,但在使用变量扩展到偏移量("${@: -1:1}"
vs "${@:$n:1}"
)时则不需要.
要获取参数变量(或数组)的所有成员,请忽略扩展表达式的第二部分:
"${@: -3}" # third-to-last to last
Run Code Online (Sandbox Code Playgroud)