bash脚本中 if 语句 和 for 语句的用法
在bash shell脚本中,我们要先了解三种执行顺序 顺序执行 (从左到右,从上到下的执行) 选择执行 (条件满足或者不满足的时候,才会执行某段结构) 循环执行 (重复执行某段结构) 今天所写的if 就是选择顺序,for就是循环执行 在if或者for中不可避免的要使用一些结构,还有一些运算方法,我先把这些列出来,方便以后使用。 算术运算方法: 1.$[expression] 其中的表达式可以是纯数字组成的,也可以使用变量引用变量值;在使用变量时,可以将$符号省略; 示例: # echo $[3+4] # NUM1=5 ; NUM2=4 ; echo $[NUM1*NUM2] 2.let VAR=EXPRESSION 根据算术表达式完成算术运算并赋值给指定的变量; 3.$((EXPRESSION)) 其中的表达式可以是纯数字组成的,也可以使用变量引用变量值;在使用变量时,可以将$符号省略; 4.expr ARGU1 ARGU2 ARGU3 其中ARGU1和ARGU3必须是整数数值;ARGU2是算术运算符; 5.echo "EXPRESSION" | bc 6.bc <<< EXPRESSION
if语句: 一个好的循环结构,必须包括两个重要的环节; 1.进入循环的条件,LIST中尚有未被取尽的元素; 简单的例子(vim编辑内容) 1.传递一个字符串给脚本,脚本会将该字符串当作用户名,如果该用户不存在,则添加之并为其设置与用户名相同的密码。 #!/bin/bash # if[$#-ne1];then echo"pleaseinputonenamecharast" exit6; fi ifid$1&>/dev/null;then echo"Thisuseralreadyexists" else useradd$1&>/dev/null echo$1|passwd--stdin$1&>/dev/null echo"Thisusercreatandpasswordisusername" fi 2.将两个文本文件的路径传递给脚本作为其参数,如果有文件不存在,则结束脚本执行并报告错误信息;如果文件都存在,则比较两个文件中哪个文件的行数多,返回行数多的文件的文件名。 #!/bin/bash # read-p"Pleaseinputtwofiles:"FILE1FILE2 if!cat$FILE1&>/dev/null;then echo"pleaseenterthefirsttruepathfile" exit5 if!cat$FILE2&>/dev/null;then echo"pleaseenterthesecondtruepathfile" exit5 fi fi LINE1=$(cat$FILE1|wc-l) LINE2=$(cat$FILE2|wc-l) if[$LINE1-ne$LINE2];then if[$LINE1-gt$LINE2];then echo"$FILE1" else echo"$FILE2" fi else echo"$FILE1and$FILE2aregenerallylong" fi unsetFILE1FILE2LINE1LINE2 3.利用RANDOM变量随机生成十个数字,显示出这十个数字,并显示出其中的最大值和最小值。 #!/bin/bash # touch/tmp/math.txt forIin$(seq110);do J=$RANDOM echo"$J" echo"$J">>/tmp/math.txt done K=$(sort-n/tmp/math.txt|head-1) L=$(sort-n/tmp/math.txt|tail-1) echo"laster$L;leaster$K" rm-rf/tmp/math.txt exit5
#!/bin/bash # read-p"enteronenumber:"INT if[[$INT=~[^[:digit:]]]];then echo"pleaseenterthenumber" exit5 fi echo”zhengsanjiao“ forIin$(seq$INT);do forJin$(seq$[INT-I]);do echo-n"" done forKin$(seq$[2*I-1]);do echo-n"*" done echo done echo"daosanjiao" forMin$(seq$INT);do forBin$(seq$[M-1]);do echo-n"" done forNin$(seq$[2*(INT-M)+1]);do echo-n"*" done echo done echo"lingxing" if[$[INT%2]-ne0];then INT2=$[(INT+1)/2] forQin$(seq$INT2);do forWin$(seq$[INT2-Q]);do echo-n"" done forEin$(seq$[2*Q-1]);do echo-n"*" done echo done forRin$(seq$[INT2-1]);do forTin$(seq$[R]);do echo-n"" done forYin$(seq$[2*(INT2-R)-1]);do echo-n"*" done echo done exit7 else echo"qingshurujishu>3" fi 5.分别打印顺序和旋转的九九乘法表。 #!/bin/bash # forIin$(seq19);do forJin$(seq1$I);do echo-ne"$I×$J=$[I*J]t" done echo done forMin$(seq19);do forNin$(seq$M9);do echo-ne"$M×$N=$[N*M]t" done echo done (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |