第N个字的变量直到结束

use*_*114 1 bash

第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或多个单词.

koj*_*iro 7

它可以在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)