判断结构 if 命令 or : or 变量 then 命令 命令;命令 fi -------------------------------------------------- if 命令 or : or 变量 then 命令 命令;命令 elif 命令 or : or 变量 then 命令 命令;命令 fi -------------------------------------------------- case 字符串 or 变量 in 字符串 or 变量 or 正则表达式| 字符串 or变量 or 正则表达式)命令;; // “|”逻辑或 字符串 or 变量 or 正则表达式)命令;命令;; esac -------------------------------------------------- 循环结构 for 变量 in 传进来的参数集 do 命令 命令;命令 done -------------------------------------------------- for 变量 or((i=1;i<=50;i++)) do 命令 命令;命令 done -------------------------------------------------- while 命令 //返回为真的话,就执行循环体。 do 命令 命令;命令 done -------------------------------------------------- until 命令 //返回为假时,才执行循环体。 do 命令 命令;命令 done -------------------------------------------------- 例: for((i=1;i<=50;i++)) do mkdir -p /userdata/$i chmod 754 /userdata/$i done -------------------------------------------------- break n 命令不执行当前循环体内break下面的语句从当前循环退出. continue n 命令是程序在本循体内忽略下面的语句,从循环头开始执行. 命令组合符:圆括号()和花括号{} shell中有两种方法将命令组合在一起: 一、圆括号使shell创建一个 子shell来读取并执行括起来的名命令.左括号和右括号不论出现在命令行中的什么位置, shell 都会认为它们具有特殊的组合意义的.只有用双引号将它们括起来引用,才表示圆括号或花括号的原义. 例如: echo a(b) 将出现语法上的错误,要想输出a(b)字符串 只能括起来: echo "a(b)" 或 echoa"("b")" 这样才能被 shell 正确解释. 利用组合命令有什么作用呢? 1、用圆括号组合命令 圆括号的组合命令可以创建子进程运行组合程序,建立子进程的功能是很有用的,因为子shell 在组合命令中的种种操作都不会影响到当前 shell 的各变量的值. 例如: 子进程在执行组合命令时改变了工作目录,并在新的工作目录下执行一系例命令,执行完后它可以不必返回原工作目录,因为子进程工作目录的改变不会影响到当前工作目录. 创建子进程后将当前的环境也同样传给 子shell,当前shell 中用 export 输出到环境中的各变量在子 shell 中同样有效. 二、花括号也可以将命令组合在一起.左右花括号只有作为一条命令的第一个字出现时,shell 才它们含有特殊含义.与圆括号不同的是花括号并不创建 子shell,只是由当前的 shell 来读取并执行括起来的命令.有时用户希望使用一组命令的顺序输出作为另一组命令的输入,此时用花括号是很方便的.不论是用圆括号不是花括号,退出状态都是等于最后一条括起来的命令的退出状态. 可以在当前 shell 中执行的命令: 用户在使用 shell 时,一定要了解哪些命令是可以在当前shell 中执行的,哪些不可以在当前 shell 中执行的,这很有用。 以下命令是在调用时不会生成新的 子shell: for; while; until;if; case; test; break; continue;return; echo; eval; exec;set; export; read; readonly;shift; times; trap; umask; cd; wait; :; {};exit;
|