Shell脚本

学习资料:  http://c.biancheng.net/cpp/view/6995.html

IF:
1、基本语法:
if [ command ]; then
符合该条件执行的语句
fi
2、扩展语法:
if [ command ];then
符合该条件执行的语句
elif [ command ];then
符合该条件执行的语句
else
符合该条件执行的语句
fi


好家伙:  &>/dev/null 是指标准输出和错误输出都输出到/dev/null上,而不在界面上显示;

  1. $ command > /dev/null 2>&1 (全部不输出)


test:

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

数值测试

参数说明
-eq等于则为真
-ne不等于则为真
-gt大于则为真
-ge大于等于则为真
-lt小于则为真
-le小于等于则为真

例如:

复制代码代码如下:

num1=100
num2=100
if test $[num1] -eq $[num2]
then
    echo 'The two numbers are equal!'
else
    echo 'The two numbers are not equal!'
fi


输出:
The two numbers are equal!


字符串测试

参数说明
=等于则为真
!=不相等则为真
-z 字符串字符串长度伪则为真(字符串长度为0)
-n 字符串字符串长度不伪则为真(字符串长度不为0)

文件测试

参数说明
-e 文件名如果文件存在则为真
-r 文件名如果文件存在且可读则为真
-w 文件名如果文件存在且可写则为真
-x 文件名如果文件存在且可执行则为真
-s 文件名如果文件存在且至少有一个字符则为真
-d 文件名如果文件存在且为目录则为真
-f 文件名如果文件存在且为普通文件则为真
-c 文件名如果文件存在且为字符型特殊文件则为真
-b 文件名如果文件存在且为块特殊文件则为真


for: 
第一种:
  1. #!/bin/bash  
  2.   
  3. for((i=1;i<10;i++))  
  4. do  
  5.     echo $i  
  6. done  

第二种:
  1. #!/bin/bash  
  2. for i in `seq 10`  
  3. do  
  4.     echo $i  
  5. done  


((a=$a+1))
这个是规定啊.执行算数运算.要加(())
shell的for循环也是两个双括号
也可以这么写
&a=[ &a +1]



exec的重定向

  先上我们进如/dev/fd/目录下看一下:

root@localhost:~/test#cd /dev/fd

root@localhost:/dev/fd#ls

0  1  2  255

默认会有这四个项:0是标准输入,默认是键盘。

1是标准输出,默认是屏幕/dev/tty

2是标准错误,默认也是屏幕

255

当我们执行exec 3>test时:

root@localhost:/dev/fd#exec 3>/root/test/test 

root@localhost:/dev/fd#ls

0  1  2  255  3

root@localhost:/dev/fd#

看到了吧,多了个3,也就是又增加了一个设备,这里也可以体会下linux设备即文件的理念。这时候fd3就相当于一个管道了,重定向到fd3中的文件会被写在test中。关闭这个重定向可以用exec 3>&-

root@localhost:/dev/fd#who >&3

root@localhost:/dev/fd#ls >&3

root@localhost:/dev/fd#exec 3>&-

root@localhost:/dev/fd#cat /root/test/te

test  text  

root@localhost:/dev/fd#cat /root/test/test 

root     tty1         2010-11-16 01:13

root     pts/0        2010-11-15 22:01 (192.168.0.1)

root     pts/2        2010-11-16 01:02 (192.168.0.1)

0

1

2

255

3






原文地址:https://www.cnblogs.com/tangbinghaochi/p/6296451.html