课程笔记
课程/Linux/运维&测试
shell编程之条件判断与流程控制
介绍
章节
问答
笔记
GYNexus
2018-02-28
课程总结
截图
0赞 · 0采集
yg667
2016-08-21
例6.判断用户输入的是什么文件 #!/bin/bash #判断用户输入的是什么文件 read -p "Please input a filename: " file #接收键盘的输入,并赋予变量file if [ -z "$file" ] #判断file变量是否为空 then echo "错误,请输入一个文件名!" exit 1 elif [ ! -e "$file" ] #判断file的值是否存在 then echo "您输入的不是一个文件名!" exit 2 elif [ -f "$file" ] then echo "$file 是一个普通文件。" elif [ -d "$file" ] then echo "$file 是一个目录文件。" else echo "$file 是一个其他文件(硬链接等)。" fi 4.多分支case语句 语法: case $变量 in "值") 程序1 ;; "值") 程序2 ;; *) 程序3 ;; 例7.判断用户输入 #!/bin/bash read -p "Please input yes/no: " -t 30 choose case $choose in "yes") echo "Your choose is yes." ;; "no") echo "Your choose is no." ;; *) echo "Your choose is error, please choose yes or no." ;; esac 5.for语句 for 变量 in 值1 值2 值3... do 程序 done 例8. #!/bin/bash #批量解压缩文件 cd /root/test/ ls *.tar.gz > ls.log #将所有.tar.gz 结尾的文件名输出到ls.log文件中,并覆盖原有文件名 ls *.tgz >> ls.log #将.tgz结尾的文件追加到ls.log文件中 for i in $(cat ls.log) do tar -zxf $i &> /dev/null #将所有的输出结果都输出到/dev/null回收站中,不显示任何输出 done rm -rf ls.log
0赞 · 1采集
yg667
2016-08-21
例9.加法运算 #!/bin/bash #从1加到100 s=0 for(( i=1;i<=100;i=i+1 )) #注意,运算需要加到()中,而且shell中没有++,--这种写法 do s=$(( $s+$i )) done echo " 1+2+...+100 = $s " 例10 #!/bin/bash #批量添加指定数量的用户 read -p "Please input user name: " -t 30 name read -p "Please input the number of users: " -t 30 num read -p "Please input the password of users: " -t 30 pass if [ ! -z "$name" -a ! -z "$num" -a ! -z "$pass" ] then y=$(echo $num sed 's/[0-9]//g') if [ -z "$y" ] then for (( i=1;i<=$num;i=i+1 )) do /usr/sbin/useradd $name$i &>/dev/null echo $pass /usr/bin/passwd --stdin $name$i &>/dev/null #将useradd改为userdel,同时删掉添加密码这句就是删除用户 done fi fi 检验:cat /etc/passwd 普通用户跟其他用户的区别:普通用户可以登录/bin/bash,而其他用户为/sbin/nologin 提取出系统的普通用户:cat /etc/passwd grep /bin/bash grep -v root cut -d ":" -f1
0赞 · 1采集
yg667
2016-08-21
例11.删除系统中的普通用户 #!/bin/bash for i in $(cat /etc/passwd grep /bin/bash grep -v root cut -d ":" -f1) do userdel -r $i done 6.while循环和until循环 while循环 --> 条件成立才循环,条件不成立即停止循环 例12. #!/bin/bash i=1 s=0 while [ $i -le 100 ] do s=$(( $s+$i )) i=$(( $i+1 )) done echo $s until循环和while循环相反,until为条件不成立时候循环并执行程序,一旦循环条件成立,则终止循环 上式换为until即为: #!/bin/bash i=1 s=0 until [ $i -gt 100 ] #循环直到变量i大于100,就停止循环 do s=$(( $s+$i )) i=$(( $i+1 )) done echo "The sum is: $s." 其他shell脚本: vi /etc/rc.d/init.d/httpd
0赞 · 1采集
未名公子
2016-08-05
例11.删除系统中的普通用户 #!/bin/bash for i in $(cat /etc/passwd grep /bin/bash grep -v root cut -d ":" -f1) do userdel -r $i done 6.while循环和until循环 while循环 --> 条件成立才循环,条件不成立即停止循环 例12. #!/bin/bash i=1 s=0 while [ $i -le 100 ] do s=$(( $s+$i )) i=$(( $i+1 )) done echo $s until循环和while循环相反,until为条件不成立时候循环并执行程序,一旦循环条件成立,则终止循环 上式换为until即为: #!/bin/bash i=1 s=0 until [ $i -gt 100 ] #循环直到变量i大于100,就停止循环 do s=$(( $s+$i )) i=$(( $i+1 )) done echo "The sum is: $s." 其他shell脚本: vi /etc/rc.d/init.d/httpd
1赞 · 2采集
未名公子
2016-08-05
例9.加法运算 #!/bin/bash #从1加到100 s=0 for(( i=1;i<=100;i=i+1 )) #注意,运算需要加到()中,而且shell中没有++,--这种写法 do s=$(( $s+$i )) done echo " 1+2+...+100 = $s " 例10 #!/bin/bash #批量添加指定数量的用户 read -p "Please input user name: " -t 30 name read -p "Please input the number of users: " -t 30 num read -p "Please input the password of users: " -t 30 pass if [ ! -z "$name" -a ! -z "$num" -a ! -z "$pass" ] then y=$(echo $num sed 's/[0-9]//g') if [ -z "$y" ] then for (( i=1;i<=$num;i=i+1 )) do /usr/sbin/useradd $name$i &>/dev/null echo $pass /usr/bin/passwd --stdin $name$i &>/dev/null #将useradd改为userdel,同时删掉添加密码这句就是删除用户 done fi fi 检验:cat /etc/passwd 普通用户跟其他用户的区别:普通用户可以登录/bin/bash,而其他用户为/sbin/nologin 提取出系统的普通用户:cat /etc/passwd grep /bin/bash grep -v root cut -d ":" -f1
1赞 · 1采集
未名公子
2016-08-05
例6.判断用户输入的是什么文件 #!/bin/bash #判断用户输入的是什么文件 read -p "Please input a filename: " file #接收键盘的输入,并赋予变量file if [ -z "$file" ] #判断file变量是否为空 then echo "错误,请输入一个文件名!" exit 1 elif [ ! -e "$file" ] #判断file的值是否存在 then echo "您输入的不是一个文件名!" exit 2 elif [ -f "$file" ] then echo "$file 是一个普通文件。" elif [ -d "$file" ] then echo "$file 是一个目录文件。" else echo "$file 是一个其他文件(硬链接等)。" fi 4.多分支case语句 语法: case $变量 in "值") 程序1 ;; "值") 程序2 ;; *) 程序3 ;; 例7.判断用户输入 #!/bin/bash read -p "Please input yes/no: " -t 30 choose case $choose in "yes") echo "Your choose is yes." ;; "no") echo "Your choose is no." ;; *) echo "Your choose is error, please choose yes or no." ;; esac 5.for语句 for 变量 in 值1 值2 值3... do 程序 done 例8. #!/bin/bash #批量解压缩文件 cd /root/test/ ls *.tar.gz > ls.log #将所有.tar.gz 结尾的文件名输出到ls.log文件中,并覆盖原有文件名 ls *.tgz >> ls.log #将.tgz结尾的文件追加到ls.log文件中 for i in $(cat ls.log) do tar -zxf $i &> /dev/null #将所有的输出结果都输出到/dev/null回收站中,不显示任何输出 done rm -rf ls.log
1赞 · 1采集
channel_ho
2016-05-18
shell功能
截图
0赞 · 0采集
channel_ho
2016-05-18
shell功能
截图
0赞 · 0采集
Tinywan
2016-04-09
shell主要用来简化管理员操作; shell编程更多的考虑程序的功能实现,而不是效率。
0赞 · 1采集
慕娘3768484
2016-04-07
ddd
截图
0赞 · 0采集
慕粉9302643
2016-03-24
shell不讲究语法,讲究实现
截图
0赞 · 0采集
xulianzhen
2016-01-27
shell主要用来简化管理员操作; shell编程更多的考虑程序的功能实现,而不是效率。
0赞 · 0采集
imooclong_88
2015-12-27
shell编程主要目的是简化管理员操作实现自动化处理,所以脚本注重的是功能实现而不是执行效率
0赞 · 0采集
java_hadoop学习者
2015-09-10
这是重点
0赞 · 0采集
java_hadoop学习者
2015-09-10
这是关于课程总结的内容。范德萨范德萨范德萨的分散
0赞 · 0采集
java_hadoop学习者
2015-09-06
非常感谢
0赞 · 0采集
qq___艳艳_0
2015-07-24
讲的真好,谢谢老师的分享~
0赞 · 0采集
数据加载中...