1:
#!/bin/sh
sum=0
i=1
while [ $i -le 10 ]
#while(($i<=10)) 可以 或while((i<=10)) 用(())时可以去掉变量前的$
do
#sum=`expr $sum + $i` 可以
sum=$[$sum+$i]
#i=$(($i+1)) 可以 或i=$((i+1)) 用(())时可以去掉变量前的$
i=$[$i+1]
done
k=$[(15/(4-1)-3)*2]
echo "k=${k}"
echo "Sum is:$sum"
if [ $? -eq 0 ];then
echo "最后一个命令执行成功"
else
echo"最后一个命令执行错误"
fi
if(($?==0&&1>0));then
echo "最后一个命令执行成功"
else
echo"最后一个命令执行错误"
fi
if((2==2));then //在 (())中 数字比较 和字符串比较一样
echo "2==2"
else
echo "2!=2"
fi
count=0
count=$((2*2)) //(()) 中只能做整数的运算 浮点数不行 如count=$((2.5*2.4)) 不行
echo "count=${count}"
[bnms@zj-web1 ~]$ vi zengtest.sh
#!/bin/sh
val=`grep -n "LATEST DETECTED DEADLOCK" dblocktest.txt |cut -d : -f 1` //查询关键字出现的行数 cut -d : -f 1 (以:分割取第一段)
if [ ! -z $val ];then //判断不为空 (注意空格)
echo "$val"
else
echo "kong"
fi
//3. 双括号的特殊用法
(()) 增强括号的用法, 常用于算术运算比较. 双括号中的变量可以不使用$符号前缀, 只要括号中的表达式符合C语言运算规则, 支持多个表达式用逗号分开.
比如可以直接使用for((i=0;i<5;i++)), 如果不使用双括号, 则为for i in `seq 0 4`或者for i in {0..4}.这种扩展计算是整数型的计算,不支持浮点型.若是逻辑判断,表达式exp为真则为1,假则为0。
再如可以直接使用if (($i<5)), 如果不使用双括号, 则为if [ $i -lt 5 ].
[[]] 增强方括号用法, 常用于字符串的比较. 主要用于条件测试, 双括号中的表达式可以使用&&, ||, <, >等C语言语法.
比如可以直接使用if [[ $a != 1 && $a != 2 ]], 如果不适用双括号, 则为if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ].
4:检查文件夹下目录的多少(df -i 文件系统索引使用率较高,可以查找目录多的文件夹方便处理)
[bnms@tyjk3 bin]$ cat checkdf_i.sh
#!/bin/bash
#查找某个目录下文件的数量
for i in /bnms/masteragent/*;
do echo $i; find $i | wc -l;
done
5:时间差,数字判断
[dp@offline zengpan]$ cat test.sh
startTime=$(date +%s)
rownum=`cat text.txt|wc -l`
if [ ${rownum} -eq 0 ];then
echo "rownum is 0"
fi
endTime=$(date +%s)
echo "execute time is $(($endTime-$startTime)) s"
6: for
#!/bin/bash
cd /home/dp/local/task/LoadXiaojinkuToHbase
date=20160831
for((i=0;i<10;i++))
do
./bin/start.sh -d ${date}0${i}
done
for((i=10;i<24;i++))
do
./bin/start.sh -d ${date}${i}
done
输出:
./bin/start.sh -d 2016083101
./bin/start.sh -d 2016083102
./bin/start.sh -d 2016083103
./bin/start.sh -d 2016083104
./bin/start.sh -d 2016083105
./bin/start.sh -d 2016083106
./bin/start.sh -d 2016083107
./bin/start.sh -d 2016083108
./bin/start.sh -d 2016083109
./bin/start.sh -d 2016083110
./bin/start.sh -d 2016083111
./bin/start.sh -d 2016083112
./bin/start.sh -d 2016083113
./bin/start.sh -d 2016083114
./bin/start.sh -d 2016083115
./bin/start.sh -d 2016083116
./bin/start.sh -d 2016083117
./bin/start.sh -d 2016083118
./bin/start.sh -d 2016083119
./bin/start.sh -d 2016083120
./bin/start.sh -d 2016083121
./bin/start.sh -d 2016083122
./bin/start.sh -d 2016083123
7>数组 && ftp 命令
8>sftp