我知道如何显示所有的args和最后一个arg,但我需要知道如何显示除了最后一个之外的所有args,
$ bash show.sh a.txt b.txt c.txt ~/dest
a.txt b.txt c.txt
答案 0 :(得分:2)
你应该这样做:
echo ${*:1:$(($#-1))}
这将获取所有参数,从第一个索引开始(忽略脚本名称)并打印到倒数第二个索引。
答案 1 :(得分:0)
如果你正在使用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