Linux基本功十二:shell脚本流程控制
2013-08-07 19:53
671 查看
bash中的流程控制,设计到判断[ ] , if || && switch-case do-while until for 函数()等等
(1)判断[]
-r -w -b -c -f -x -l -e[exist] -O[owner]
file1 -nt file2 file1比file2新;
file1 -ot file2 file1比file2旧;
-eq = 表示数值相等;[ $a = $b]
-ne != 不等于
-gt 大于[great to] [%a -gt $b ]
-lt 小于[little to]
-ge 大于或等于[great equal]
-le 小于或等于
-z 为空[zero] [-z $a ]
-n 不为空 [ -n $a ]
(2)if[] && || 语句的判断
if[] 条件
then 动作
elif[]
then
elif[] then
else
fi
实例:判断一个输入的变量,然后根据相应的变量做相应的操作:
case $AAA in
shrek)
echo hello
;;
root)
echo root
;;
*)
echo other
;;
esac
实例如下;
do
done
实例一:输出小于100的数:
do
done
实例:输出小于100的数
do
done
实例一:产生1-100之间的数字
unset i a b c不会引起当前的shell的冲突;
实例:当输入一个函数名的时候就调用相应的函数完成相应的功能:
(1)判断[]
-r -w -b -c -f -x -l -e[exist] -O[owner]
file1 -nt file2 file1比file2新;
file1 -ot file2 file1比file2旧;
-eq = 表示数值相等;[ $a = $b]
-ne != 不等于
-gt 大于[great to] [%a -gt $b ]
-lt 小于[little to]
-ge 大于或等于[great equal]
-le 小于或等于
-z 为空[zero] [-z $a ]
-n 不为空 [ -n $a ]
[ abc ] //这里的abc都是ASCII码,所以都是非零的数字; echo $?; 运行结果为true=0; [ "$USER" = "SHREK"] && echo hello root //判断变量 [ -f /usr/sbin/httpd ] && echo yes //判断是否为文件 [ -x /etc/passwd ] && echo yes //判断是否是可执行文件 [ $a = $b] //变量a/b的值是否相等 [ -z $a ] //a是否为空 [ $a -gt $b ] //a是否比b大作用:我们可以进行判断后做其他的操作,检测到某个软件如果没有则进行安装;这种判断在系统的shell脚本中用的十分广泛;
(2)if[] && || 语句的判断
if[] 条件
then 动作
elif[]
then
elif[] then
else
fi
实例:判断一个输入的变量,然后根据相应的变量做相应的操作:
#!/bin/bash read AAA if [ $AAA = shrek ] then echo hello shrek elif [ $AAA = root ] then echo hello root elif [ $AAA = other ] then echo hello other else echo 'get out here!' fi(3)shell脚本语句的调试
bash -v ./ky //可见的调试; bash -vx ./ky //可见运行的过程;将每步的执行过程显示出来。(4)case语句 多重判断
case $AAA in
shrek)
echo hello
;;
root)
echo root
;;
*)
echo other
;;
esac
实例如下;
#!/bin/bash read AAA case $AAA in shrek) echo hello shrek echo nice to meet u ;; root) echo hello echo i miss u so much ;; *) echo get out here ;; esac(5)while [ $i -lt 100] 条件判断
do
done
实例一:输出小于100的数:
#!/bin/bash i=0 while [ i -lt 100 ] do i=$[$i+1] echo -n "$i" done实例二:输入一些字符串
while true do read AAA if [ "$AAA" = "ddd"] then break fi done(6)until [$i -gt 100] 条件判断
do
done
实例:输出小于100的数
#!/bin/bash until [ $i -gt 100] do i=$[$i+1] echo -n "$i " done unset i(7)for i in `seq 1 100` 循环判断
do
done
实例一:产生1-100之间的数字
#!/bin/bash for aa in `seq 1 100` do echo -n "$aa "; sleep 1 done实例二:为每个脚本文件加上课执行权限
#!/bin/bash for aaa in 111 222 333 /etc/profile.d/*.sh do echo $aaa chomd a+x $aaa done(8)函数function()
aaa() { bbb=$1*$1 return $bbb }unset aaa 取消一个函数或者一个变量的值;
unset i a b c不会引起当前的shell的冲突;
实例:当输入一个函数名的时候就调用相应的函数完成相应的功能:
#!/bin/bash start() { echo service httpd start } stop() { echo service httpd stop } jisuan() { i3=0 read -p "please input two number:" i1 i2 i3=$[$i1 +$i2] printf "$i1 + $i2 = $i3" } read name1 case $name1 in start) echo hello start function! start ;; stop) echo hello stop function stop ;; jisuan) echo Begin jisuan: jisuan ;; *) echo invalid input esac
相关文章推荐
- Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
- Linux Bash Shell学习(十二):流程控制——select
- Linux的Shell脚本中IF流程控制语句的基本语法
- linux脚本编写基础(环境变量、shell流程控制)
- Linux学习之Shell--第四天:Shell流程控制-循环语句for
- 【Shell 编程基础第二部分】Shell里的流程控制\函数及\脚本调试
- Shell脚本学习笔记(四)--流程控制
- Shell脚本的基本流程控制
- Linux Bash Shell学习(九):流程控制——if/else
- Linux新手生存笔记[9]——shell脚本基础2-条件测试及控制流
- Linux&shell之如何控制脚本
- 【Linux学习笔记】Shell 基础(3) — Shell流程控制语句
- 【Unix/Linux.Shell Script】Shell Script程序的流程控制语句
- Linux简单入门(十二)shell脚本之前的基础知识
- Linux Bash Shell学习(十一):流程控制——case
- Linux 脚本设计3——三种流程控制语句(顺序语句、分支语句、循环语句)
- linux——shell流程控制
- Shell脚本结构流程控制
- shell脚本流程控制
- Linux Bash Shell学习(十):流程控制——for