Bash1

blob.png

blob.png

blob.png做语法测试,没有消息就是最好的消息

blob.png加权限

blob.png

blob.png

单个语句的错误并不妨碍之后的语句,但是逻辑错误会导致后续语句执行不了

bash:

    -n:语法测试

    -x:模拟单步执行

变量类别:

    本地变量

    环境变量:

        export:导出,作用于当前进程及其子进程

    局部变量

    位置变量:到达两位数用${10}

2、

blob.png

blob.png

命令引用:

    1、“使用反引号

    2、使用$()

blob.png

blob.png

3、

blob.png

blob.png

4、写一个脚本,接受一个参数作为用户名,此脚本可创建此用户,并且其密码同用户名

blob.png

blob.png

blob.png

blob.png

5、$#记录参数的个数,$*所有的参数,$@所有的参数(当成一个参数)

blob.png

blob.png

blob.png

blob.png

6、

blob.png

blob.png

blob.png

shift [n]:n默认为1

blob.png

blob.png

bash的循环语句:

    for:遍历有限的元素列表

    while

    until

for语句格式:

    for var_name in list;do

        循环体

    done

生成数值列表:

    1、{start..end}

    2、seq 开始 [步进] 结束

blob.png

练习:创建10个用户,user301–user310

for userNo in {301..310}

for userNo in $(seq 301 310);do

    useradd user${userNo}

done

blob.png

blob.png

blob.png

练习:创建目录/tmp/dir-当前时间,在此目录中创建10个空文件,分别为file1-file10

blob.png

blob.png

练习:

1、创建用户tuser1-tuser9

2、创建目录/tmp/dir-当前时间

3、在/tmp/dir-当前时间目录中创建9个空文件

4、将file101的属主改为tuser1,依次类推

blob.png

blob.png

blob.png

bash中的算术运算

declare

    -i:整型变量

    -x:环境变量,类似于export

let varName=算术表达式

varName=$[算术表达式]

varName=$((算术表达式))

varName=`expr $num1 + $num2`

练习:计算100以内所有正整数之和

blob.png

blob.png

练习:分别计算100以内所有奇数和偶数之和

blob.png

blob.png

练习:计算当前系统所有用户的id之和

blob.png

blob.png

练习:计算/etc/rc.d/rc.sysinit /etc/init.d/functions /etc/issue三个文件中的字符数之和

blob.png

blob.png

练习:新建用户tmpuser1-tmpuser10,并计算他们的id之和

blob.png

blob.png

位置参数:

blob.png

blob.png

blob.png

blob.png

$#:参数个数

$*,$@:引用所有的位置参数

blob.png

blob.png

交互式脚本:

blob.png

blob.png

给变量以默认值:
varName=${varName:-value}

如果varName不空,则其值不变,否则value则作为其值

blob.png

${varName:-value}

blob.png

超时和默认值:

blob.png

blob.png

练习:通过键盘给定一个文件的路径,来判断文件内容的类型

blob.png

blob.png

练习:通过键盘给定一个目录路径,默认为“/”,来判断目录下文件内容的类型

blob.png

blob.png

算术运算:

    let varName=value

    declare -i varNmae=value

    declare -x全局变量

bash实现算术运算的方式:(不支持小数运算)

    let varName=expression

    $[expression]

    $((expression))推荐

    expr expression 中间必须加空格

blob.png    

        a=2

        b=4

        let c=$a+$b

        let a++

字串连接:

变量引用后方跟直接字串时,变量名要加{}

blob.png

变量命名:第一个单词首字母小写,其他单词首字母大写

练习:

1、脚本可以接受一个以上的文件路径作为参数

2、显示每个文件所拥有的行数

3、显示本次共对多少个文件执行了行数统计

4、显示所有文件的总行数

blob.png

blob.png

练习:

新建10个用户,并求他们的id之和

blob.png

blob.png

练习:

分别统计/etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/inittab以#开头的行和空白行

blob.png

blob.png

练习:

显示当前系统上所有默认shell为bash的用户名、uid及所有此类用户的uid之和

blob.png

blob.png

逻辑运算:

    与运算:

        真,假:

            真&&真=真

            真&&假=假

            假&&真=假

            假&&假=假

    或运算:

        真,假:

            真||真=真

            真||假=真

            假||真=真

            假||假=假

    非运算:

        真,假:

            !真=假

            !假=真

    亦或运算:操作数相同为假、相反为真

比较运算:>,<,>=,<=,==,!=

条件测试:

[ expr ]:命令

[[ expr ]]:关键字

test expr

测试类型:根据比较时的操作数的类型

    整数测试:整数比较

    字符串测试

    文件测试:判断文件的存在及属性等

    注意:比较运算通常只在同一种类型之间进行

    整型测试:

        -gt:大于

        -lt:小于

        -ge:大于等于

        -le:小于等于

        -eq:等于

        -nq:不等

    字符测试:

        >:大于

        <:小于

        <=:小于等于

        >=:大于等于

        !=:不等

        -n:是否不空,不空为真,空为假

        -z:是否为空,空为真,不空为假

选择:

    if和case

if:三种格式

    1、if 测试条件;then

        选择分支

      fi

    if ! id $username &> /dev/null;then

        useradd $username

    fi

    练习:写一个脚本,接受一个参数,这个参数是用户名,如果用户存在,则显示其id号

blob.png

blob.png

改进版:

blob.png

blob.png

    2、if 测试条件;then

        分支1

     else:

        分支2

    fi

blob.png

blob.png

练习:通过命令行传递2个整数参数给脚本,脚本返回其最大值

blob.png

blob.png

练习:通过命令行传递任意个整数给脚本,脚本可以返回其最大值

blob.png

blob.png

练习:通过命令行给定一个文件路径,判断如果此文件中存在空白行,则显示其空白行的总数,否则显示无空白行

如果把命令执行成功与否当做条件,则if语句后必须只跟命令本身,而不能引用

blob.png

blob.png

    3、if 条件1;then

        分支1

     elif 条件2;then

         分支2

     elif 条件3;then

        分支3

     else

        分支n

     fi

练习:传递一个参数给脚本,如果参数为quit则显示你要退出了,如果参数为yes,则显示说你要继续,如果为其他任意参数,则说无法识别。

blob.png

blob.png

练习:传递一个用户名给脚本:如果其id为0,则为管理员,如果id大于500则为普通用户,其他为系统用户

blob.png

blob.png

重定向:改变其标准位置

标准输入:0

    键盘

标准输出:1

    显示器

错误输出:2

    显示器

输出重定向:

    command > position覆盖重定向

blob.png

    command >> position追加重定向

错误重定向:

    command 2> position覆盖输出

    command 2>> position追加输出

blob.png

正常的信息正常输出:

blob.png

合并重定向:

    command &> position指向同一位置,position中要么保存正常信息,要么是错误信息

    command > position 2> &1错误的也输出到1的位置

blob.png

分别重定向:

command > position1 2>position2正确的输出到position1中,错误的输出到position2中

blob.png

会把原文件清掉

输入重定向:

    command < position

<<:here document此处生成文档,EOF:end of file

blob.png

blob.png直接输出到屏幕

 

原创文章,作者:黑白子,如若转载,请注明出处:http://www.178linux.com/46814

(0)
黑白子黑白子
上一篇 2016-09-17
下一篇 2016-09-17

相关推荐

  • CentOS 7破解密码教程

    启动时任意键暂停启动  按e键进入编辑模式  将光标移动linux16开始的行,添加内核参数rd.break  按ctrl-x启动  mount –o remount,rw /sysroot  chroot /sysroot  passwd root  touch /.autorelabe…

    Linux干货 2016-12-01
  • N22第八周作业

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥: 网桥是早期的二层网络设备,每个端口分别有一条独立的交换信道,不是共享一条信道,可隔离冲突域。网桥比集线器(Hub)性能更好,集线器上各端口都是共享同一条信道的,工作于数据链路层。后被端口更多的交换机替代。 集线器: 多端口中继器,工作在物理层,本身不具备识别信号的能力,只…

    Linux干货 2016-10-17
  • 马哥教育网络班22期+第1周课程练习

    一、描述计算机的组成及其功能。 组成:CPU (运算器+控制器),存诸器(内存与硬盘),输入设备,输出设备。 运算器:对数据进行加工处理的部件(包括算述运算与逻辑运算)。 控制器:负责从存储器取出指令,按指令的要求发出控制信号,使各部件协调的,一步步的完成各种操作。 存储器:计算机记忆或暂存数据的部件 输入设备:人机接口,负责输入信息(数据与指令)转成计算机…

    Linux干货 2016-08-15
  • SSH服务器实现telnet请求转发

    本次实验做的工作如下图: 中间一台CentOS6通过SSH转发两边两台CentOS7的telnet通信。 首先,在右侧CentOS7上安装telnet服务 [root@Shining ~]# yum install -y telnet telnet-server 启动telnet服务 [root@Shining ~]# systemctl start tel…

    Linux干货 2016-12-04
  • 心清冷其若冰,志皎洁其若云

    第一篇,当做测试也做开始。 心清冷其若冰,志皎洁其若云。 这闹哄哄的人间啊,仿佛是一堆杂货。无奇不有,无所不能。情感,城市,人际。每天走在这杂乱里,需要有一颗清澈而安静的心,来面对。 会累的。就算是拥有了许多,也是会累的。偶尔,我们也会在深夜里泪流满面吧。偶尔,我们也会心烦意乱的不知所措吧。 太多欲望的人间,热闹的上演着各种剧本。太多空洞的灵魂,喧嚣着各种声…

    Linux干货 2016-11-28
  • Linux管理目录和文件命令

     管理目录命令: pwd:显示当前目录 Cd:   改变当前目录 ls:    查看目录下的内容 rmdir: 删除目录 管理文件命令: cat: 查看文件内容 cp: 复制文件内容 grep:在文件中查找某字符 touch:创建文件 rm&nbsp…

    2016-03-05