PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
read
-
p "Please input (Y/N): " yn
[ "${yn}" == "Y"
-
o "${yn}" == "y" ] && echo "OK, continue" &
& exit 0
[ "${yn}" == "N"
-
o "${yn}" == "n" ] && echo "Oh, interrupt!" && exit 0
echo "I don't know what your choice is" && exit 0
由于输入正确
(Yes)
的方法有大小写之分,不论输入大写
Y
或小写
y
都是可以的,此时判断式内
就得要有两个判断才行!
由于是任何一个成立即可
(
大写或小写的
y)
,所以这里使用
-o (
或
)
连½
两个判断喔!
很有趣吧!利用这个字符串判别的方法,我们就可以很轻松的½使用者想要½行的工
作分门别类呢!
½下来,我们再来谈一些其他有的没有的东西吧!
12.3.3 Shell script
的默认变数
($0, $1...)
我们知道指令可以带有选项与参数,例如
ls -la
可以察看包含隐藏文件的所有属性与权限。那么
shell
script
能不能在½本档名后面带有参数呢?很有趣喔!举例来说,如果你想要重新启动系统的网络,
可以这样做:
[dmtsai@study ~]$
file /etc/init.d/network
/etc/init.d/network: Bourne
-
Again shell script, ASCII text executable
#
使用
file
来
查
询
后,系
统
告知
这个
文件
是
个
bash
的可
执
行
script
喔!
[dmtsai@study ~]$
/etc/init.d/network restart
restart
是重新启动的意思,上面的指令可以『重新启动
/etc/init.d/network
这支程序』的意思!
唔!
那么如果你在
/etc/init.d/network
后面加上
stop
呢?没错!就可以直½关闭该服务了!这么神奇啊?
没错啊!如果你要依据程序的执行给予一些变量去½行不同的任务时,本章一开始是使用
read
的功
能!但
read
功能的问题是你得要手动由键盘输入一些判断式。如果透过指令后面½参数,
那么一
个指令就能够处理完毕而不需要手动再次输入一些变量行为!这样下达指令会比½简单方便啦!
script
是怎么达成这个功能的呢?其实
script
针对参数已经有设定好一些变量名称了!对应如下:
/path/to/scriptname opt1 opt2 opt3 opt4
$0 $1 $2 $3 $4
这样够清楚了吧?执行的½本档名为
$0
这个变量,第一个½的参数就是
$1
啊~
所以,只要我们
在
script
里面善用
$1
的话,就可以很简单的立即下达某些指令功能了!除了这些数字的变量之外,
我们还有一些½为特殊的变量可以在
script
内使用来呼½这些参数喔!
.
$#
:代表后½的参数『个数』,以上表为例这里显示为『
4
』;
.
$@
:代表『
"$1" "$2" "$3" "$4"
』之意,每个变量是独立的
(
用双引号括起来
)
;
.
$*
:代表『
"$1c$2c$3c$4"
』,其中
c
为分隔字符,默认为空格键,
所以本例中代表『
"$1 $2 $3 $4"
』
之意。