脚本

来源:互联网 发布:2016淘宝最大的店铺 编辑:程序博客网 时间:2024/06/06 01:06

   Bash脚本:把许多指令集合在一起,提供循环、条件、判断等,用以编写程序

1.脚本用/bin/bash执行    #!/bin/bash

2.脚本调试和执行    sh test.sh

                                   sh -x test.sh

3.转义和引用

(1).转义和引用:解析字符串时,用于除去字符串中特殊字符或保留词语的特殊含义

引用:fruit = apple

            echo "can I have a $fruit"

转义:echo make \$\$\$fast

4.变量:用于在脚本中使用的名称指定值

fruit = apple

echo $fruit   echo ${fruit}

5.替换:执行指定命令并用命令输出替换脚本中的命令

today=$(date +%Y-%m-%d)

echo today

echo $today

6.for 循环:用于值列表中相同命令的重复

for host in file{1..3};do echo $host; done

7.位置参数:指定的位置参数总数$#

                        位置参数自身$0、$1、$2、$3......

                        所有位置参数$@、$*

8.退出状态

echo $?

结果为0表示命令正确,结果不为0表示结果不正确

9.数字运算比较符

等于    -eq

不等于  -ne

小于 -lt

小于等于 -le

大于 -gt

大于等于 -ge



编写script.sh

script.sh  /mnt/userfile  /mnt/passfile

当要建立的用户已经存在不作任何操作

当脚本后所指定的文件个数少于2个

please give me userfile or passwdfile

当所给文件的行数不一致

/mnt/userfile's line is different   /mnt/passwdfile's line


“  ”:字符的连接,直接用双引号

$:变量定义的时候不用,使用变量的时候一定要加上

=:赋值,两边无空格

     “空格”:for中数组内容的分隔

[   ]:后面需要一个空格

[[   ]]与(  ):while条件判断的时候都可以用


shell文件的写:>  是覆盖,>>是在后面追加

eg:将ll的内容写入fileName这个文件中

echo   ll>>fileName

shell文件的读:while   read  $LINE

                             do

     echo   $LINE

     done<fileName



if语句

eg:写一个脚本,判断当前所用的shell

#!/bin/bash

if

["$SHELL"="/bin/bash" ];then

echo "your login shell is the bash"

echo "SHELL is : $SHELL"

else

echo "your login is not bash but $SHELL"

fi


if语句的格式:if[    ];then

                          elif[    ];then

                           else

                           fi



while语句

eg:写一个脚本,求1到100的和

#!/bin/bash

SUM=0

i=1

while

           [ $i   -le  100 ]

do

            SUM=$(($SUM + $i))

             i=$(($i + 1))

done

             echo "$SUM"



for语句

eg:写一个脚本,通过ping测试172.25.254.1-172.25.254.50之间所有主机是否在线

#!/bin/bash

for

     i  in  `seq   1  1  50`

do

     ping   -cl   -wl   172.25.$i >/dev/null

      [ $?  -eq  0 ] && echo  "172.25.254.$i   ip  is  up" || echo   "172.25.254.$i  ip  is  down"

done


-c是ping的次数

-w是测试的时间,-w 1就是一秒中无论成功失败都结束

-c   -w后面都要输入参数所以都要带上1

/dev/null是个黑洞,写入任何东西都会丢失


expect语句

eg:#!/user/bin/expect

        spawn  /mnt/ask.sh     spawn是expect的内部命令,给shell加个壳,用来传递交互指令

        expect  "who"    判断上次输出结果是否执行包含“who”,如果有立即返回,否则等到超时后返回

        send   "haha"   相当于手动输入“haha"

        expect   eof    在输出中搜索文件结束符

         interact    执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了,否则退出登录








     


                                    

原创粉丝点击