bash脚本编程之五 字符串测试及for循环

整数测试:

-le:小于等于

-lt:小于

-ge:大于等于

-gt:大于

-eq:等于

-ne:不等于

字符测试:

==:测试是否相等,相等为真,不等为假

!=:测试是否不等,不等为真,等为假

-n string:测试字符串是否为空,空则真,不空则假

-z string:测试指定字符串是否不空,不空为真,空则为假

 文件测试:

-e:如果文件存在则为真

-f:如果文件存在且为普通文件则为真

-d:如果文件存在且为目录则为真

-r:如果文件存在且可读则为真

-w:如果文件存在且可写则为真

-x:如果文件存在且可执行则为真

 

组合测试条件

-a:与关系

-o:或关系

-l:非关系

if [ $# -gt 1 -a $# -le 3]:如果传递给shell的参数个数大于等于1并且小于等于3则为真

if[  $# -gt 1 ]  && [   $#  -le 3   ]:同上一样的意思换种表达

 

循环:进入条件,退出条件

for 

while

until

for 变量 in 列表; do        !!!注与if语句中then一样,如果do单独一行写不用加;否则跟for语句写在一块需加;

 eg

     for I in 1 2 3 4 5 6 7 8 9 10;do

           加法运算H

     done

     进入条件从列表第一个开始,退出条件是列表被遍历完成之后。

如何生成列表

[1...100]

seq [起始数  [步进长度] ] 结束数   !!!注:[]表示里面的内容可省

declare -i SUM=0:声明变量是整形

             integer 整形

    

 

 

例子:

字符测试:

练习:传递一个用户名参数给脚本,判断此用户的用户名跟其基本组的组名是否一致,并将其显示出来

           

          

 

练习:写一个脚本

传递一个参数(单字符就行)给脚本,如参数为q、Q、quit、或Quit就退出脚本;否则,就显示用户的参数;

 

练习:

写一个脚本:

1、设定变量FILE值为/etc/passwd

2、依次向/etc/passwd中的每个用户问好,并显示对方的shell,形如

      Hello,root,your shell: /bin/bash

3、统计一共有多少个用户

脚本:

执行结果:

来个逼格更高的:只向默认shell为bash的用户问好

脚本:

嵌套一个if语句用来判断默认shell是否为bash

执行结果:

 

写一个脚本:

1、添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加;

 

扩展:

接受一个参数:

add:添加用户user1....user10

del:删除用户user1...user10

其它:退出

脚本:

执行结果:

!!!注:所用到的不熟悉的知识点:linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义

$#:传输给脚本的参数个数

$@:传给shell脚本的所有参数的列表 

$0:脚本本身的名字

$1,2:传递给该shell脚本的第一,二个参数

$*:以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个

$$:是脚本运行的当前进程ID号

$?:是显示最后命令的退出状态,0表示没有错误,其他表示有错误

区别:@ *

  • 相同点:都是引用所有参数
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数(分别存储在1 2 3)则" *" 等价于 “1 2 3"(传递了一个参数);而“ @" 等价于 "1"" 2" "$3"(传递了三个参数)

 

添加指定用户:

脚本:

执行结果:

 

 

 

写一个脚本:

计算100以内所有能被3整除的正整数的和:

取模,取余:%

3%2=1

100%55=45

 

写一个脚本:

计算100以内所有奇数的和以及所有偶数的和;分别显示之;

 

写一个脚本,分别显示当前系统上所有默认shell为bash的用户和默认shell为/sbin/nologin的用户,并统计各类shell下的用户总数,显示结果形如

      

 

posted @ 2017-09-04 10:56  kgcqw  阅读(208)  评论(0)    收藏  举报