[Shell]常用语法

赋值

FILE=$1  //=两边不能有空格
echo $FILE

逻辑判断

表达式
1if [ expression ]; then ... fi //[]两边必须有空格
2if [[ expression ]]; then ... fi
3if expression1 -o expression2; then
elif expression; then
else
fi

组合判断条件
-a: and
-o: or
!: 非

命令间逻辑关系
&&  || //和其他语言意义一致

eg1: 判断a大于b并且小于c
1if (( a > b )) && (( a < c ))
2if [[ $a > $b ]] && [[ $a < $c ]]
3if [ $a -gt $b -a $a -lt $c ]
整数比较
-eq ==
-ne !=
-gt >
-ge >=
-lt <
-le <=
   
文件测试
-z string 字符是否为空,空为真,非空为假
-n string 是否为不空,空为假 非空为真
-e FILE 文件是否存在
-f file 文件是否为普通文件
-d file 是否为目录
-r file 文件对当前用户是否可读
-w file 文件对当前用户是否可写
-x file 文件对当前用户是否可执行
-z 是否为空  为空则为真
-a 是否不空  不空为真

循环

# for
for
((i=1;i<=10;i++))
do
sth
done
for i in $(seq 1 10) for i in {1..10} awk 'BEGIN{for(i=1; i<=10; i++) print i}' for i in `ls`; for i in f1 f2 f3 ; list="GOD always love you!" for i in $list; for file in /bin/*;

do
echo $line
done

# while
while true
do
sth
done

#switch
case $char in
[A-Z][a-z])
sth
;;
[0-9])
sth
;;
*)
sth
esac

文本读写

for line in `cat filename`
do
 echo $line
done
for line in $(cat filename)    
do
 echo $line
done
while read -r line   #-r选项保证读入的内容是原始的内容,意味着反斜杠转义的行为不会发生
do
 echo $line
done < filename

 远程访问

ssh faith@$ip "grep 'DecodeBlob Error' /data/datac20181106/GameServer*/ERROR/*.log

Note

$?  上个命令执行成功,则为0,否则为1-255间的一个
$#  传参个数
$n  参数值
((exp))  exp可以不加$引用
set -e   发生错误立刻退出
sh -n ***.sh  检查shell语法
//判断上个命令执行是否成功
raise() {
    if [ $? != 0 ]; then echo "$1"; exit 1 ;fi
}
原文地址:https://www.cnblogs.com/faithfu/p/9914253.html