我知道如何显示所有参数和最后一个参数,但我需要知道如何显示除最后一个参数之外的所有参数,
$ bash show.sh a.txt b.txt c.txt ~/dest
a.txt b.txt c.txt
我知道如何显示所有参数和最后一个参数,但我需要知道如何显示除最后一个参数之外的所有参数,
$ bash show.sh a.txt b.txt c.txt ~/dest
a.txt b.txt c.txt
你应该这样做:
echo ${*:1:$(($#-1))}
这将获取所有参数,从第一个索引开始(忽略脚本名称)并打印到倒数第二个索引。
如果您正在使用bash
,这是一种方法:
#!/bin/bash
for i in $(seq $(($#-1)) -1 1) ; do
echo ${BASH_ARGV[$i]}
done
BASH_ARGV
是一个包含参数堆栈的数组,您可以使用它seq
来获取该数组的所需索引(由于堆栈性质,顺序相反)。
$#
是参数的数量。成绩单如下:
pax> ./show.sh a.txt b.txt c.txt ~/dest
a.txt
b.txt
c.txt