[sh]shell小结

一 判断

-d     测试是否为目录。
-f 判断是否为文件。

-s 判断文件是否为空 如果不为空 则返回0,否则返回1
-e     测试文件或目录是否存在。
-r     测试当前用户是否有权限读取。
-w     测试当前用户是否有权限写入。
-x     测试当前用户是否有权限执行。
语法:
[ -d /etc/fstab ]
且 或 非
&&     逻辑的与,"而且"的意思。
||     逻辑的或,"或者"的意思。
!     逻辑的否

[ $USER != root ] && echo "user"
[ $USER != root ] && echo "user" || echo "root"

-eq     判断是否等于
-ne     判断是否不等于
-gt     判断是否大于
-lt     判断是否小于
-le     判断是否等于或小于
-ge     判断是否大于或等于

[ 10 -gt 10 ]

二 变量

[root@lanny ~]# FreeMem=`free -m | grep cache: | awk '{print $3}'`
验证变量是否已经获得可用内存量:
[root@lanny ~]# echo $FreeMem
609
告警内存不够用:
[root@lanny ~]# [ $FreeMem -lt 1024 ] && echo "Insufficient Memory"
Insufficient Memory

三 字符串

=     比较字符串内容是否相同。
!=     比较字符串内容是否不同。
-z     判断字符串内容是否为空。  ----->从而判断变量是否被定义.
[ -n "$var" ]                     :判断$var变量是否有值->已经定义?

判断String变量是否为空值: [root@lanny
~]# [ -z $String ] 上一条命令执行成功,说明变量String确实为空值: [root@lanny ~]# echo $? 0 输出当前的系统语言: [root@lanny ~]# echo $LANG en_US.UTF-8 判断当前的系统语言是否为英文,否则输出“不是英语”: [root@lanny ~]# [ $LANG != "en.US" ] && echo "Not en.US" Not en.US

四 语句

if then fi
for do done
while do done

4.1判断语句
if [ -f /home/ ];then
    echo ok;
fi
4.2循环语句
for i in `seq 1 24`;do
    echo $i
done

while :;do
    echo `date`
    sleep 2
done

五 参数:

$? 显示上一条命令的返回值,非0则为失败,即不是目录
$1 第一个参数
[root@lanny ~]# vim test.sh
#!/bin/bash
echo "当前脚本名称为$0"
echo "总共有$#个参数,分别是$*。"
echo "第1个参数为$1,第5个为$5。

[root@lanny ~]# sh test.sh one two three four five six
当前脚本名称为Example.sh
总共有6个参数,分别是one two three four five six。
第1个参数为one,第5个为five。
原文地址:https://www.cnblogs.com/iiiiher/p/5385108.html