Shell基础- 变量、判断、循环

网友投稿 206 2022-10-28


Shell基础- 变量、判断、循环

1、shell的基本格式、变量

# shell脚本中要加上解释器 #! /bin/bash

# 用脚本打印出hello world

#! /bin/bashecho "hello world"exit

参数:参数是一个存储实数值的实体,脚本中一般被引用

#利用变量回显hello world,下面例子会回显两个hello world。

#! /bin/basha="hello world"echo $aecho "hello world"exit

如果参数后面加着其它内容,需要用{}

#! /bin/basha="hello world"echo ${a},i am comingexit

回显结果:

#计算字符串长度,hello world 连空格,总共11

2、脚本退出

#一个执行成功的脚本返回值为0,不成功为非0

[root@localhost script]# clear[root@localhost script]# sh hello.sh hello world,i am coming11[root@localhost script]# echo $?0

#判断一个目录内是否有某个文件,有则回显file exsit ,没有则返回1

[root@localhost script]# cat test.sh #! /bin/bashcd /homeif [ -f file ];thenecho "file exsit"elseexit 2 fi[root@localhost script]# sh test.sh [root@localhost script]# echo $?2[root@localhost script]#

3、Test语句、if语句

test -d xx 目录是否存在test -f xx 文件是否存在test -b xx 是否为块文件test -x xx 是否为可执行文件test -f xx 判断变量是否为空 // 测试变量为空才为真echo $?=0、否则为echo $?=1test -z xx 判断字符长度是否为零 // 测试如果为0则为真,echo $?=0A -eq B 判断是否相等A -ne B 判断不相等A -le B 小于等于A -lt B 小于A -gt B 大于#判断字符串是否相等, $A为变量,bad为字符值if [ "$A" == "bad" ];then......else......fi#变量对比判断if [ "$A" == "$B" ];then......else......fi

#if条件判断语句

if [];then......else......fi

#if语句嵌套

if [];then.......elif [];then.......elif [];then.......else......fi

#shell 中与或非用法

与&&1)if [ $str=a -a $str=b ] 2)if [ $str=a ] && [ $str=b ]或||:1)if [ $str=a -o $str=b ] 2)if [ $str=a ] || [ $str=b ]

zk_port_status (){#由于监听方式不一样,采取或一真为真,way1 way2 只要一个成功就证明端口存活way1_zk_port=`netstat -anlput | grep 2181 | grep "LISTEN" | awk {'print $4'} |awk -F ::: {'print $2'}`way2_zk_port=`netstat -anlput | grep 2182 | grep "LISTEN" | awk {'print $4'} | awk -F : {'print $2'}`kafka_port=`netstat -anlput | grep 9092 | grep LISTEN | awk {'print $4'} | awk -F : {'print $2'}`if [ $way1_zk_port -eq 2181 ] || [ $way2_zk_port -eq 2181 ];then echo 0else echo 1fi}#此处为输入参数,对应前面的函数$1

#test -f 判断变量是否为空

if test -z "$result"then echo "result is NULL"else echo "$result is not Null"fi

#test举例,判断test文件是否存在,如果存在对其进行备份操作。如果不在回显信息

#例子:输入一个数值判断其在哪个区间。小于80,大于100,位于80到100之间,用的是if嵌套!

[root@localhost script]# cat if.sh #! /bin/bashread -p "plz input a $num:" numif [ $num -le 80 ];thenecho "num is less 80"elif [ $num -ge 80 ] && [ $num -le 100 ];thenecho "num between 80 and 100"elseecho "num is greater than 100"fi

4、循环语句 for、while

for var in $var1 $var2 $var3 var4... $vardo ...... ......done

#例子:打印1到10数字

[root@localhost home]# cat for1.sh #! /bin/bashfor var in {1..10} doecho "$var"sleep 2done

#打印方块内容 for嵌套

[root@localhost home]# cat for2.sh

#! /bin/bashfor ((i=1;i<10;i++))dofor ((j=1;j<10;j++))doecho -n "*" doneecho ""done

# while循环,主要也是用于循环,另外还有continue(跳出continue下面语句,回归顶部命令行)、break(停止、退出循环)

#while语句

while [条件判断]do............done

#例子:根据条件判断的,输出1-10

[root@localhost script]# cat while.sh #! /bin/bashvar=1while [ $var -le 10 ]doecho $varvar=$[$var+1]done[root@localhost script]# sh while.sh [root@localhost script]# echo $?0

while read line用法

grep "$1" result.txt | awk {'print $1'} | while read linedo.......done

按行读取

#!/bin/bashwhile read linedo echo $linedone < test.txt

#数组变量引用

echo $[result[0]]

#json 中引用shell变量

'${result[0]}' 单引号括起来-d '{"msgtype": "text","text": {"content": "'${result[1]}'service connect timed out"}}'


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:smokeping自动检测系统
下一篇:企业网络架构规划及配置实施(实用)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~