#一个未使用shift命令的例子
#no_shift.sh
vi no_shift.sh
#!/bin/bash
#提示用户输入参数个数
echo "number of arguments is $#"
#提示用户输入内容
echo "What you input is:"
#通过命令行传递脚本for循环列表参数
while [[ "$*" != "" ]]
do
echo "$1"
done
./no_shift.sh hello
number of arguments is 1
What you input is:
hello
hello
^C
#一个未使用shift命令的例子
#use_shift.sh
vi use_shift.sh
#!/bin/bash
#提示用户输入参数个数
echo "number of arguments is $#"
#提示用户输入内容
echo "What you input is:"
#通过命令行传递脚本for循环列表参数
while [[ "$*" != "" ]]
do
echo "$1"
shift
done
./use_shift.sh hello world
number of arguments is 2
What you input is:
hello
world
vi shift_exam1.sh
#!/bin/bash
#判断输入的参数是否小于三个
if [ "$#" -gt 3 ]
then
echo "The parameter is higher than 3!"
exit 1
fi
#如果小于,显示第一个命令行参数
echo $*
#判断第二个参数是否为空,若不为空,刚命令行参数先偏移一位,执行第二个参数
if [ -n $2 ]
then
shift
echo $*
fi
#由于第二个参数判断不为空时,执行了上面的if语句,参数已经偏移到第二个参数,
#该if语句刚相当于判断第三个参数是否为空,不为空则显示第三个参数
if [ -n $2 ]
then
shift
echo $*
fi
./shift_exam1.sh 3 2 1
3 2 1
2 1
1
./shift_exam1.sh 2 1
2 1
1
./shift_exam1.sh 1
1
./shift_exam1.sh 4 3 2 1
The parameter is higher than 3!
#下面的例子形成一个不限制行数,参数的倒的命令行三角形
vi shift_exam2.sh
#!/bin/bash
#用while实现一个不限制行数参数命令组成的倒三角形
while [ "$#" -gt 0 ]
do
echo $*
shift
done
./shift_exam2.sh 9 8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
7 6 5 4 3 2 1
6 5 4 3 2 1
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1