交互输入与for语句

交互输入与for语句

1、交互输入

read a b c

 

read命令同时可以定义多个变量值;而输入的内容默认以空格为分隔符,将值输入到对应的变量中;

如果默认值过多,最后所有的值都会被赋予给最后一个变量;

如果默认值过少,多余的变量则为空值;

read如何输入:

 

echo”请输入一个目录:

      我们需要echo –n取消换行符号

echo”请输入一个目录:”;read变量

请输入一个目录:etc

常用参数:

-p

     read -p”请输入一个目录:” 变量

-t 定义超时时间

     Read –t 5 –p “请输入一个目录:”变量

脚本默认值

[!-n $filename]&&filename=”wsq”

-n 存在为真 –z不存在为真

输入是否正确-------------------------

           |                                       |

输入是否正确--------------------   没有输入-------------------------

    |             |                                |                           |

正确       不正确                   提示必须输入           输出默认值

fdisk –l 显示所有内容

-b 判断是否为快文件

For语句的应用场景:

     有一个功能,这个功能需要循环执行,只是执行对象不同;对象必须是同类数据

For语句格式:

     a=[‘a’,’b’,’c’]----在python程序中,我们很多情况下,需要调用相应的方法去生成列表;

     for 变量in列表;

             循环体

      Done

99乘法表:

      {1..9}

      #!/bin/bash

      for i in `seq 9`;do

            For j in `seq i`do

                [ $j –le $i ]&& echo –n ”$i*$j=`echo $(($i*$j))` ”

           done

           echo” ”

     done

echo –n 不换行输出

echo –e 使echo命令,能够识别特殊字符: 回车不换行 换行符 制表符tab=4个空格

arp –a 查看当前的所有主机

seq 1 2 100 中间是步长 输出所有偶数

列表的生成方式:

1、直接给出字符串列表

2、整数列表

     a{start…end}   \{1..1}不行  {1..9}==pythoy range{1,100}

     b seq命令引用 $(seq[start [step]] end)

                   步长 python range{1,100,2 }

                   Seq 20 30

3、返回列表的命令

     $(COMMAND)

     场景:ls /var/log/

4、glob机制

     示例:同上脚本功能

     $(ls /var/log)

      /var/log/*

Test命令总结:

1、test的命令的option的-a –o只在命令中使用;

     例如[`du –h $filename|cut –d: -f1`-lt 100k –a –x $filename ]

      test `du –h $filename|cut –d: -f1`-lt 100k –a –x $filename

注意:做字符串匹配的时候,不支持正则以及通配符

2、test test=[[ ]]

     在连接两个test的命令的时候,不能使用命令内部option –o –a

     一般使用|| &&== !=

     [[ ]]

5、变量引用

     $@ $* 将参数做为for循环的列表

     $0---和awk不一样

     bash中$0代表运行的脚本文件;

     awk中$0       ----awk按行执行

需要多个词的时候用”$@”,需要一个词的时候用”$*”

练习1:写一个for循环—遍历本网络网段中所有up电脑

     #!/bin/bash

     declare –i sum=0

     for i in ${seq 1 100};do      #地址1-100

     ping –c 1 –w 1 10.6.12.$i> /dev/null    #-c 一个包

           if [ $? –eq 0];then

               let sum++

               echo”10.6.12.$i 是通的

           else

               echo”10.6.12.$i 是不通的

     fi

     done

echo “总共$sum有台电脑在线

练习2:1到100的偶数和

     #!/bin/bash

     declare –i sum=0

     for i in ${seq 0 2 100};do      #步长为

               let sum+=$i

     done

echo “总数为:$sum”

练习3:判断 /var/log/的所有文件,以log.结尾

     #!/bin/bash

     declare –i sum=0

     for i in ${ls /var/log};do   

           if [ “*.log”= $i];then

                  echo $i     

     let sum++

     fi

     done

echo ”.log结尾的文件有:$sum”

练习4:netstat –tan 查看网络状态,统计LISTEN出现的状态次数、ESTABLISHED出现的状态次数

     netstat –tan | grep “^tcp ”| awk ’{print $6}’

     for i in $( netstat –tan | grep “^tcp ”| awk ’{print $6}’);do if [$i =” LISTEN”];then let xxx elif[$i =” ESTABLISHED”];

原文地址:https://www.cnblogs.com/wsq-qq/p/11359432.html