shell实例编程4

本文详细介绍了Shell脚本中如何控制返回值,包括使用exit、true/false命令,以及操作符如&&、||、!的用法。此外,文章讲解了test和[命令的使用,涉及字符串和数值的比较以及文件存在性检查。同时,文章讨论了if、case、while/until循环结构,并给出了一些实用示例,如猜数游戏和Oracle数据库启动脚本。最后,提到了正则表达式在匹配IP地址中的应用,以及如何监控网络连接并记录日志。
摘要由CSDN通过智能技术生成

shell中对返回值的控制:

脚本用exit来指定返回值

如果不写exit,则返回最后运行的命令(函数)的返回值

true命令返回0,false命令返回1

操作符!将返回值取反(0-》1,1-》0),操作符!后必须有空格

&&操作符判断前面一个命令的返回值,如果为0则执行后面的操作

||操作符判断前面一个命令的返回值,如果不为0则执行后面的命令

test 和[ 命令以及bash2引入的内置命令[[ 都用返回值来表示判断结果,操作符后面要有空格

 

test和[  ---一定要注意空格

-z string  string是空的,没有设置

string1 = string2       =(==)   < >  != 判断字符串

int1 -eq int2  (两个变量或者字符串当成整型变量的时候是否相等)            -ne  -gt  -lt -ge -le            greater less

-e file  文件是否存在

-f file  文件是否存在且是普通文件

-d dirname 文件是否存在且是目录

file1 -ef file2   两个文件是否是一个硬链接(have the same device and inode)

 

尽量不要在test里面做布尔运算

! expression  非 

expression1 -a expressio2   与

expression1 -o expression2  或操作

 

-g file  FILE exists and is set-group-ID

-G file  FILE exists and is owned by the effective group ID

-k file  FILE exists and is owned by the effective group ID

-h /-L file 软连接

 

if 分支结构(if 后面要有空格,[ ] 里要有空格)

if  [ condition ]; then

elif [ ]; then

      do sth

else

     do sth

fi

 

case 分支结构:

case "$var" in

$condition1 " ) commands ;;

$condition2 " ) commands ;;

esac

eg:

while read -n 1 -s -p "hit a key" key    (-n 1 读入一个字母,-s 不显示出来输入的内容, -p 显示出hit a key)

do

case "$key" in

  [[ :lower: ]]   )  echo "hit a low";;

  ...

   *                  ) echo "other";;

esac

done

 

while/until 循环结构

while : ; do  (: 是个死循环)

   ...

done 

 

for 循环:

for var in [list]

do

        commands...

done

 

for(( exp1;exp2;exp3))

do

        commands

done

for 循环写法总结:

1. for((i=1;i<=10;i++)); do  let s+=i; don

2. for i in $(seq 10)

3. for i in `ls`

4. for i in ${arr[@]}

5. for i in $*; do

6. for file in /proc/sys/net/ipv4/conf/*/accept_redirects; do

7. for i in f1 f2 f3 ;do

8. for i in *.txt

9. for i in $(ls *.txt)

    for i in `cat abc.txt`

for in语句与` `和$( )合用,利用` `或$( )的将多行合为一行的缺陷,实际是合为一个字符串数组

============ -_- ==============for num in $(seq 1 100)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值