灵活运用shift命令

发布时间:2020-06-01编辑:脚本学堂
shell shift命令

我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当 shell 程序不知道其个数时,可以把所有参数一起赋值给变量$*。若用户要求 Shell 在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在 $1 后为 $2,在 $2 后面为 $3 等。在 shift 命令执行前变量 $1 的值在 shift 命令执行后就不可用了。

示例如下:
#测试 shift 命令(x_shift.sh)
until [ $# -eq 0 ]
do
echo "第一个参数为: $1 参数个数为: $#"
shift
done
执行以上程序x_shift.sh:
$./x_shift.sh 1 2 3 4

shift可以用来向左移动位置参数。
 Shell的名字 $0
 第一个参数 $1
 第二个参数 $2
 第n个参数 $n
 所有参数 $@ 或 $*
 参数个数 $#
 
shift默认是shift 1
示例:
 

复制代码 代码如下:

cat shift.sh
#----------------------------输出文字-开始----------------------------
#!/bin/bash
until [ -z "$1" ]  # Until all parameters used up
do
  echo "$@ "
  shift
done
#----------------------------输出文字-结束----------------------------

sh shift.sh 1 2 3 4 5 6 7 8 9
#----------------------------输出文字-开始----------------------------
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9
3 4 5 6 7 8 9
4 5 6 7 8 9
5 6 7 8 9
6 7 8 9
7 8 9
8 9
9
#----------------------------输出文字-结束----------------------------