+++++++脚本练习之for循环和if语句使用

author author     2022-09-14     411

关键词:

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的超时时间

使用示例

[email protected] ~]# 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
[[email protected] ~]#


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 "
script pathname: 33[32m$scriptName33[0m"

#初始化release号码
let NUMBER++
sed -i "[email protected](NUMBER=).*@[email protected]" $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、两个循环

[[email protected] scripts]# cd /scripts
[[email protected] scripts]# pwd
/scripts
[[email protected] scripts]# touchsc
Enter a script pathname[default: working directory]: how

script pathname: /scripts/how.sh
[[email protected] 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

linux脚本练习之script047-统计英语一句话中字母数不大于6的单词。(代码片段)

script047题目统计英语一句话中字母数不大于6的单词。分析本题考查的知识点:变量for...in循环语句echo命令tr命令wc命令if条件判断语句思路:利用for...in语句循环存储了英语句子的变量,通过空格自动分割单词。使用tr-... 查看详情

linux脚本练习之script035-读取`a.c`文件中的内容并做加1运算。(代码片段)

...行的内容,用$(())进行加一运算,最后打印输出。脚本#!/bin/bash######################################功能:读取a.c文件中的内容并做加1运算。如a.c内容如下:##使用:直接执行,不需要任何参数###########################... 查看详情

1-23-shell脚本之-if流程控制语句和for循环语句的使用

大纲:1、逻辑判断2、if流程控制语句3、for循环控制语句 ----------------------------------------------在开始之前,先了解一下逻辑判断符号:&&与、||或、!非A&&B 必须A,B同时成立,才能通过判断--->判断流程:先执... 查看详情

linux|shell脚本-条件判断if和循环语句for

...简介上个章节中,我们学习了判断语句和运算语句。shell脚本中,这些判断语句一般都是和if、else、elif、for和while等语句一起使用。在脚本编写中,条件判断语句常常用于多种情况的判断,符合哪一种情况就执行哪一种的命令。... 查看详情

bash脚本中if语句和for语句的用法

在bashshell脚本中,我们要先了解三种执行顺序顺序执行(从左到右,从上到下的执行)选择执行(条件满足或者不满足的时候,才会执行某段结构)循环执行(重复执行某段结构)今天所写的if就是选择顺序,for就是循环执行在i... 查看详情

linux脚本练习之script046-统计文件中仅包含数字的行。(代码片段)

...[0-9]+$表示只匹配全是数字的行。也可以使用grep命令。脚本#!/bin/bash######################## 查看详情

shell脚本的学习和使用(代码片段)

目录前言 shell脚本编程注意事项​​​​​​​第一个shell脚本——Helloworldshell脚本的变量    定义变量    使用变量    只读变量     删除变量     变量类型shell的字符串Shell数组 流程控制语句    if分支语句   ... 查看详情

linux脚本练习之script087-netstat练习之查看和3306端口建立的连接(代码片段)

script087题目注:题目来源于SHELL30netstat练习2-查看和3306端口建立的连接。假设netstat命令运行的结果我们存储在nowcoder.txt里,格式如下:ProtoRecv-QSend-QLocalAddressForeignAddressStatetcp000.0.0.0:61600.0.0.0:*LISTENtcp00127 查看详情

linux脚本练习之script072-求平均值(代码片段)

...cript072题目注:题目来源于SHELL14求平均值。写一个bash脚本以实现一个需求,求输入的一个的数组的平均值。第1行为输入的数组长度N;第2~N行为数组的元素,如以下为:数组长度为4,数组元素为1298。示例&... 查看详情

linux脚本练习之script089-netstat练习之输出和3306端口建立连接总的各个状态的数目(代码片段)

script089题目注:题目来源于SHELL32netstat练习4-输出和3306端口建立连接总的各个状态的数目。假设netstat命令运行的结果我们存储在nowcoder.txt里,格式如下:ProtoRecv-QSend-QLocalAddressForeignAddressStatetcp000.0.0.0:61600.0.0.0:*LISTEN 查看详情

linux脚本练习之script089-netstat练习之输出和3306端口建立连接总的各个状态的数目(代码片段)

script089题目注:题目来源于SHELL32netstat练习4-输出和3306端口建立连接总的各个状态的数目。假设netstat命令运行的结果我们存储在nowcoder.txt里,格式如下:ProtoRecv-QSend-QLocalAddressForeignAddressStatetcp000.0.0.0:61600.0.0.0:*LISTEN 查看详情

linux脚本练习之script076-打印等腰三角形(代码片段)

...SHELL19打印等腰三角形。打印边长为5的等腰三角形。你的脚本应该输出:***************脚本如果直接使用echo输出五行的话,那么意义不大。可以通过循环来进行输出,我们探求它们之间的规律,把原来的空格字符替... 查看详情

linux脚本练习之script076-打印等腰三角形(代码片段)

...SHELL19打印等腰三角形。打印边长为5的等腰三角形。你的脚本应该输出:***************脚本如果直接使用echo输出五行的话,那么意义不大。可以通过循环来进行输出,我们探求它们之间的规律,把原来的空格字符替... 查看详情

Play Framework IF 语句和 FOR 循环

】PlayFrameworkIF语句和FOR循环【英文标题】:PlayFrameworkIFstatementandFORloop【发布时间】:2016-03-2515:25:12【问题描述】:我是MVC新手,关注thislink我有一个使用Solr生成的pdf元数据的搜索页面。我的if语句和html端的for循环不起作用模型... 查看详情

linux脚本练习之script071-去掉所有包含this的句子(代码片段)

...xff1a;题目来源于SHELL13去掉所有包含this的句子。写一个bash脚本以实现一个需求,去掉输入中含有this的语句,把不含this的语句输出。示例,假设输入如下:thatisyourbagisthisyourbag?tothedegreeorextentindicated.therewasacourtc 查看详情

linux脚本练习之script089-netstat练习之输出和3306端口建立连接总的各个状态的数目(代码片段)

script089题目注:题目来源于SHELL32netstat练习4-输出和3306端口建立连接总的各个状态的数目。假设netstat命令运行的结果我们存储在nowcoder.txt里,格式如下:ProtoRecv-QSend-QLocalAddressForeignAddressStatetcp000.0.0.0:61600.0.0.0:*LISTENtcp0... 查看详情

linux脚本练习之script023-提示用户输入`yes`或`no`,并判断用户输入的是`yes`还是`no`,或是其它信息。(代码片段)

script023题目编写脚本/root/bin/yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息。分析本题考查的知识点:read命令echo命令tr命令case...in多条件分支条件语句if...elif...else多条件分支语句思... 查看详情

python进阶练习之——算素数(代码片段)

**题目:**求100之内的素数。**程序分析:**用else执行for循环的奖励代码(如果for是正常完结,非break)。lo=int(input('下限:'))hi=int(input('上限:'))foriinrange(lo,hi+1) 查看详情