linux shell命令之shift


#一个未使用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

linux shell命令之shift

上一篇:linux shell命令之tee调试


下一篇:[题解]HDU5118 GRE Words Once More!