1、向命令行脚本传入参数的方法举例:
./shell 10 30
这种就是传入shell脚本里面两个参数10和30
2、命令行内部访问传入的变量的方法:
$0:表示的是程序名;$1:表示的是传入的第一个参数;$2:表示的是传入的第二个参数
注意:
(1)如果传入的参数是有空格的话,必须加上单引号
(2)如果脚本需要多于9个的命令行参数的话,在第九个变量之后,你必须使用加上花括号的,例如:${10}
3、测试参数:当脚本传入的参数,并没有脚本内部使用的参数的时候,就会报错。所以我们在使用脚本传入的参数之前,最好进行参数的校验
举例:
#!/bin/bash
if[ -n "$1" ]
then
echo Hello $1.
else
echo "Sorry"
fi
说明:使用-n参数进行检测是否有数据
4、特殊参数变量:$#(表示命令行运行时输入了多少个参数)
访问最后一个传入参数:
(1)${!#}
(2)params=$#
$params
5、$*与$@两个变量的使用
$*:会将传入的所有参数当成一个整体的参数
$@:会将传入的所有参数当成每一个单独的参数来处理
6、移动变量:使用shift命令,默认情况下他会将每个参数变量减一,所以变量$3的值会移动到$2,变量$2的值会移动到$1,变量$1的值则会被删除,$0不会变,主要用来遍历不太清楚传入的参数情况
另外:我们可以给shift命令提供一个参数,来改变移动的位数,例如:shift 2
提醒:一旦使用shift之后,被删除的参数将被丢掉并且无法恢复
7、处理简单的选项方法:
使用case语句:
#!/bin/bash
while [ -n "$1" ]
do
case "$1" in
-a) echo "1";;
-b) echo "2";;
-c) echo "3";;
*) echo "4";;
esac
shift
done
8、简单的将参数与选项分隔开来的方法:使用--来分隔
9、使用复杂的输入:例如输入的时候选项放到一起:-abc,或者一个选项后面接选项参数:-a test -b tess,平时用的不多,这些先略过,在书中的282页开始看
10、获取用户的输入:使用read命令接受从标准输入(键盘)或是另一个文件描述符的输入
举例:
#!/bin/bash
echo -n "Enter you name:"
read name
echo "Hello $name,welcome to my program"
参数:-p(允许直接在read命令行指定提示符)
read -p "Enter you name:" age
另外,可以在read后面接多个参数,输入的时候以空格分隔的将每个输入分配各个参数,分配完了,还有输入的话,将会将剩余的输入分配给最后一个参数变量
-t(指定read命令超时选项):read -t 5
-n1(指定read命令接受单个字符,只要你按下单个字符回答后,read命令就会接受输入并将它传给变量)
-s(静默输入,输入的时候不显示输入字符,例如输入密码)
11、从文件中读取输入:主要使用cat与read命令结合的方式
举例:
#!/bin/bash
cat test | while read line
do
echo "Line : $line"
done
说明:while循环会继续通过read命令处理文件中的行,知道read命令读取不到内容的时候,就会非零的退出码,然后结束while循环