这里主要介绍两部分:用户输入操作和数据显示。
1.用户输入操作。
脚本里面用户的输入操作是通过键盘实现输入操作,最容易想起的命令就是read命令,使用read命令之后就提示用户可以在终端输入数据了。这里使用
read是主要配合使用几个主要的参数:-p,指定了一个提示信息;-t
,使用计数器,限制用户输入变量或消息的时间,如果超时则返回一个非零状态;-s,在输入时不在终端显示要输入的数据,实际上是显示数据的,只是该命令将
文本颜色设置成与背景相同的颜色。
介绍完基本输入接下来就要说明命令行参数,简单的说就是在执行脚本文件时所带的参数,第一个参数使用$1表示,依次类推,当参数大于9时就要使用${10}这样的形式表示。既然有命令行参数,就涉及到如何显示这些参数、参数计数以及参数和选项分离。
1.1 参数的显示
实现参数显示主要有两个符号实现:$*、$@。这两个实现是有区别的。后面实现之后大家看结果自行总结
1.2 参数计数
实现参数计数的命令为$#.
1.3 参数和选项分离操作
有时候在执行脚本的时候既需要使用选项又需要使用参数,怎么将选项和参数分开?脚本中给出了一个特殊符号--做为区分参数和选项的标志。
上面讲了这么多现在就给出一个脚本实现上面的功能。
#!/bin/bash
# this is a simple example about how to handle user input
echo 1:show parameter
echo 2:count parameter
echo 3:separation para and options
read -p "input a name :"
if [ $name="add" ]
then
total=$[ $5+$6 ]
elif [ $name="mul" ]
then
total=$[ $7*$8 ]
fi
echo the result is $total
echo the counts of parameter are $#
while [ -n "$1" ]
do
case "$1" in
-a) echo "this is -a option" ;;
-b) echo "this is -b option" ;;
-c) echo "thsi is -c option" ;;
--) shift
break;;
*) echo option over;;
esac
shift
done
echo use $@ show para:
count=1
for para in "$@"
do
echo para $count:$para
count=$[ $count+1 ]
done
echo use $* show para:
count1=1
for para in "$*"
do
echo para $count1:$para
count1=$[ $count1+1 ]
done
结果:
2 数据显示
在学习操作系统时,对文件的一系列操作都用到了文件描述符,系统里每个文件描述符都有一个对应的id,比如0表示标准输入、1表示标准输出、2表示标准错误输出,结合上述文件描述符和重定向技术实现消息的重定向。
一般对于标准输入来说,需要通过键盘实现输入,当结合重定向技术之后,可以将一个文件的内容作为输入。这里面主要掌握exec命令就可以了。
一般进行重定向输出时有时候数据很多,不能每个echo都重定向输出,这样太麻烦,可以使用exec一次性全部重定向所有输出。
1 #!/bin/bash
2 #redirecting
3
4 exec &> test3
5
6 echo hello there
7 echo i love life
8
9 ls -al tesw test5 &>> test3
其中&>表示将错误输出和标准输出同时显示,一般情况下错误消息是和普通脚本信息分开显示的。
阅读(1606) | 评论(0) | 转发(1) |