Shell 脚本实践
1. 脚本判断命令输出是否为空
(1)判断字符串为空
if [ "$str" = "" ]
if [ x"$str" = x ]
if [ -z "$str" ] (-n 为非空)
注意:都要代双引号,否则有些命令会报错,养成好习惯吧!
2.输入y/n
可以使用判断符号进行数据的判断,如检查某变量是否为空 [ -z $SHELL ],需要注意的是中括号(“[]”)内的组件必须以空格隔开。有以下脚本:
#!/bin/bash read -p "input you choice(y/n):" choice [ "$choice" == "y" ] || [ "$choice" == "Y" ] && echo "OK,continue" && exit 0 [ "$choice" == "n" ] || [ "$choice" == "N" ] && echo "Oh,interrupt!" && exit 0 echo "I don't know what is your choice" && exit 0
#! /bin/sh echo "Is it morning? Please answer yes or no." read YES_OR_NO if [ "$YES_OR_NO" = "yes" ]; then echo "Good morning!" elif [ "$YES_OR_NO" = "no" ]; then echo "Good afternoon!" else echo "Sorry, $YES_OR_NO not recognized. Enter yes or no." exit 1 fi exit 0
(3)while条件循环
和C语言类似。比如一个验证密码的脚本: #! /bin/sh echo "Enter password:" read TRY while [ "$TRY" != "secret" ]; do echo "Sorry, try again" read TRY done 下面的例子通过算术运算控制循环的次数: #! /bin/sh COUNTER=1 while [ "$COUNTER" -lt 10 ]; do echo "Here we go again" COUNTER=$(($COUNTER+1)) done
(3)case 和 while 结合
#!/bin/bash
while : :表示真,一直循环
do 要循环执行的命令
echo -n "enter any number [1-5]:" 输入序号1-5
read nu 设置read的变量
case $nu in 进行选择,输入的要是1-5的数字
1|2|3|4|5)
echo "enter anumber 1 and 5" 就循环这一行,让你不停的输入1-5
;;
*) 如果输入的不是1-5的数字
echo -n "wrong number, continue (y/n?:)" 询问你是否继续
read con 设置read的变量
case $con in 进行选择,看是不是y|yes|Y|YES这几个
y|yes|Y|YES)
continue 如果是,那么就跳过,让你重新输入,如果不是
;;
*) 那么就执行这个break退出循环
break
;;
esac
esac
done
坚持不懈

浙公网安备 33010602011771号