首页 > 代码库 > +++++++脚本练习之for循环和if语句使用
+++++++脚本练习之for循环和if语句使用
1、vim快捷方式
2、脚本实现创建脚本,自动生成事先定义的文件
3、/etc/rc.d/rc3.d目录下分别有多个以K开头和S开头的文件;分别读取每个文件, 以K开头的文件输出为以文件名加stop,以S开头的文件输出为以文件名加start.而输出:
"K34filename stop"
"S66filename start"
1、两个循环
2、单个循环
4、写一个脚本探测172.16.250.0/24网络内的在线状态
ping命令
ping [OPTIONS...] IP-ADDR -c # ## ping的次数 -w # ## 每Ping一次IP-ADDR的超时时间
使用示例
root@izpo45bh60h6bsz ~]# ping -c 1 -w 1 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.050 ms --- 127.0.0.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.050/0.050/0.050/0.000 ms [root@izpo45bh60h6bsz ~]#
1、vim快捷方式
如 果 你 要 重 复 键 入 一 个 短 语 或 一 个 句 子 , 也 有 一 种 快 捷 的 方法。Vim有一种记录宏的机制。
你键入"qa"开始把一段宏记录入寄存器变量‘a‘中。按下来你可以象平常一样键入你要的操作,只是这些操作都会被Vim记录进它命名为‘a‘的宏中,再次再下"q"键,就结束了宏‘a‘的录制。
当你要重复执行你刚才记录的那些操作时只要使用"@a"命令。共有26个可用的寄存器供你记录宏。
使用宏你可以重复多个不同的操作。而不仅仅是插入文本。如果你要进行某种重复的操作,记着要用这一招呀。
使用宏要注意宏只是机械地重复你刚才键入的动作,当你在文件里移动时要小心。你用宏重复时和你当初录制时要操作的文本对象可能不一样。你录制宏时向右移4 个字符可能对它当前的环境来说是正常工作。但当你回放这些宏时,它工作的文本环境可能需要移动5个字符。当你要录制的操作比较复杂时,要想一次就全部通过也不是一件容易的事,此时你可以写一段宏或脚本。这对于使你的程序模板化非常有用。比如,一个函数头, 你可以把这项功能定制得如你所愿的智能化
2、脚本实现创建脚本,自动生成事先定义的文件
事先生成脚本中的格式 #!/bin/bash #
#!/bin/bash # Version:0.0.1 # Author:Lcc.org # Desc: #脚本中release号的号码配置文件 fileNumber=/root/.config_release_number [ -r $fileNumber ] && . $fileNumber read -t 5 -p ‘Enter a script pathname[default: working directory]: ‘ scriptName #字符串测试,必须用引号,除了[[ "" =~ PATTERN ]] if [ -z "$scriptName" ]; then scriptName=`mktemp -u --tmpdir=/tmp XXXX.sh` elif [ -a $scriptName -a -d $scriptName ]; then [[ "$scriptName" =~ .sh$ ]] || scriptName="${scriptName}.sh" else [[ "$scriptName" =~ .sh$ ]] || scriptName="${scriptName}.sh" scriptName="${PWD}/$scriptName" fi #写入格式 cat > $scriptName << EOF #!/bin/bash # Version: 0.0.$NUMBER # Author: Lcc.org # Description:some toys EOF echo -e "\nscript pathname: \033[32m$scriptName\033[0m" #初始化release号码 let NUMBER++ sed -i "s@\(NUMBER=\).*@\1$NUMBER@" $fileNumber
附加: 1、判断脚本的语法问题 # bash -n filename.sh 2、给予执行权限 # chmod +x filename.sh 3、重命名为touchsc,放入PATH定义的路径中 # mv filename.sh touchsc # mv touchsc /bin
3、/etc/rc.d/rc3.d目录下分别有多个以K开头和S开头的文件;分别读取每个文件, 以K开头的文件输出为以文件名加stop,以S开头的文件输出为以文件名加start.而输出:
"K34filename stop"
"S66filename start"
1、两个循环
[root@izpo45bh60h6bsz scripts]# cd /scripts [root@izpo45bh60h6bsz scripts]# pwd /scripts [root@izpo45bh60h6bsz scripts]# touchsc Enter a script pathname[default: working directory]: how script pathname: /scripts/how.sh [root@izpo45bh60h6bsz scripts]# cat how.sh #!/bin/bash # Version: 0.0.10 # Author: Lcc.org # Description:.. for i in /etc/rc.d/rc3.d/K*; do echo "$(basename $i) stop" done for i in /etc/rc.d/rc3.d/S*; do echo "$(basename $i) start" done
2、单个循环
#!/bin/bash # Version: 0.0.11 # Author: Lcc.org # Description: small toys for i in /etc/rc.d/rc3.d/*; do i=$(basename $i) if [[ "$i" =~ S ]]; then echo "$i start" elif [[ "$i" =~ K ]]; then echo "$i stop" else echo "...." fi done
4、写一个脚本探测172.16.250.0/24网络内的在线状态
#!/bin/bash # Version: 0.0.12 # Author: Lcc.org # Description: Small toys IP=172.16.250. declare -i IP for i in $(seq 254); do ping -c 1 -w 1 ${IP}$i > /dev/null 2>&1 [ $? -eq 0 ] && echo "${IP}$i online" done
本文出自 “Reading” 博客,请务必保留此出处http://sonlich.blog.51cto.com/12825953/1955986
+++++++脚本练习之for循环和if语句使用