shell显示从第一个到最后一个之前的args

时间:2013-07-09 01:31:42

标签: shell

我知道如何显示所有的args和最后一个arg,但我需要知道如何显示除了最后一个之外的所有args,

$ bash show.sh a.txt b.txt c.txt ~/dest
a.txt b.txt c.txt

2 个答案:

答案 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