case...esac
case 种类方式(string) in --开始阶段,种类方式可分成两种类型,通常使用 $1 这种直接输入类型
种类方式一)
程序执行段
;; --种类方式一的结束符号
种类方式二)
程序执行段
;;
*)
echo "Usage: {种类方式一|种类方式二}" --列出可以利用的参数值
exit 1
esac --case结束处
种类方式(string)的格式主要有两种:
直接输入:就是以“执行文件 + string”的方式执行(/etc/rc.d/init.d 里的基本设定方式),string可以直接写成$1(在执行文件后直接加入第一个参数)。
交互式:就是由屏幕输出可能的项,然后让用户输入,通常必须配合read variable,然后string写成$variable的格式
例:
echo "This program will print your selection!"
case $1 in --使用直接输入指令形式
one)
echo "your choice is one"
;;
two)
echo "your choice is two"
;;
three)
echo "your choice is three"
;;
*)
echo "Usage {one|two|three}" --列出可以使用的参数
exit 1 --如输入错误参数就退出
esac
7、循环
for ((条件1; 条件2; 条件3)) --已经知道要运行几次
do
执行语句
done
for variable in variable1 variable2 --已经知道要运行几次
do
执行语句
done
while [ condition1 ] && { | | } [ condition2 ] --当条件符合时就继续执行
do
执行语句
done
until [ condition1 ] && { | | } [ condition2 ] --直到条件符合时候才退出程序
do
执行语句
done
例1:
declare -i s --变量声明
for (( i=1; i<=100; i=i+1 ))
do
s=s+i
done
echo "The count is ==> $s"
例2:
declare -i i
declare -i s
while [ "$i" != "101" ]
do
s=s+i
i=i+1
done
echo "The count is ==> $s"
例3:
declare -i i
declare -i s
until [ "$i" = "101" ]
do
s=s+i
i=i+1
done
echo "The count is ==> $s"
例4 判断非数字类型:
LIST="Tomy Jony Mary Geoge"
for i in $LIST
do
echo $i
done
8、调试脚本
sh [-nvx] scripts
-n --不执行脚本,查询脚本内的语法,若有错误则列出
-v --在执行脚本之前,先将脚本的内容显示在屏幕上
-x --将用到的脚本内容显示在屏幕上,与-v稍微不同
9、shell中变量自增的实现方法
1. i=`expr $i + 1`;
2. let i+=1;
3. ((i++));
4. i=$[$i+1];
5. i=$(( $i + 1 ))
10、Linux Shell 对文件的操作
读取配置文件
配置文件config内容如下:
name=example
读取配置文件方式一:cat config.ini |echo $name
读取方式二:
source config
echo $name
五、Linux Shell其他特殊实现
1、同时执行两个命令
command & --后台运行
2、删除某些文件除外的所有文件
其中rm -f !(a) 最为方便。如果保留a和b,可以运行rm -f !(a|b)来实现。
不过一般bash中运行后会提示“-bash: !: event not found ” 可以通过运行shopt -s extgolb来解决。
[root@localhost abc]# rm -f !(a)
-bash: !: event not found
[root@localhost abc]# shopt -s extglob
[root@localhost abc]# rm -f !(a)
rm -rf !(*.tar.gz|tiplog) 保留tar.gz和tiplog,删除其他所有文件。