转码
# dos2unix ./test.sh
权限
#
chmod a+x ./test.sh变量
var="111"
echo $var
echo ${var}
运算
no1=4;
no2=5;
let result=no1+no2
echo $result;
自增自降低
let no++
let no--
[] 和 let 相似
result=$[no1 + no2]
result=$[$no1 + 5]
也能够使用 (()),但使用(()) 时。变量名前须要加上 $
result=$(($no1 + 5))
expr 也能够用于基本算术操作
result=`expr 3+4`
result=$(expr $no1 + 5)
以上不支持浮点
bc 能够浮点
echo "4*0.56" |bc 输出 2.24
文件描写叙述符
0 1 2 标准输入 输出 标准错误
重定向到文本
echo "123" > temp.txt
追加
echo "123" >> temp.txt
查看文件内容
cat temp.txt
cat 1.txt 2.txt 多个内容
ls +
非法參数输出错误信息 stderr
命令错误并退回 返回非 0 的退出状态
成功完毕返回数字 0
退出状态能够从特殊变量 $? 获得,在命令执行完后立马执行 echo $? 就能够打印退出状态
ls + >out.txt 错误信息不能输出到文本
ls + 2>out.txt 错误信息能输出到文本
stderr 和 stdout 各自
cmd 2>stderr.txt 1>stdout.txt
stderr 转换为 stdout
cmd 2>&1 out.txt
或者
cmd &> out.txt
stderr 重定向到
/dev/null
读取日期
date
函数定义
function fname()
{
return 0; 返回值
}
函数调用
$fname;
$fname arg1 arg2; 传參数
一定要注意 [] 空格
- #! /bin/sh
- a=4;
- b=5;
- if [ "$a" = "$b" ]; then
- echo "1111"
- #####
- #! /bin/sh
- a=4;
- b=5;
- if [ "$a" -eq "$b" ]
- then
- echo "yyyyyyyyyy"
- else
- echo "nnnnn"
- fi
- #####
- #! /bin/sh
- ps aux|grep redis-stat | grep -v grep| wc -l
- a=11
- b=11
- if [ $a -eq $b ]
- then
- echo "start process....."
- else
- echo "runing....."
- fi
- #####
注意 <之类须要 (())
以下这个监控 redis 进程不存在就重新启动
- #! /bin/sh
- p="redis-server"
- proc_num()
- {
- num=`ps aux|grep $p | grep -v grep| wc -l`
- return $num
- }
- proc_num
- n=$?
- if (( "$n" < 1 ))
- then
- echo $n
- echo "start redis-server process....."
- else
- echo $n
- echo "redis-server runing ok."
- fi
- #####
crontab -e 每分钟监控一次
- * /1 * * * * /redis.sh
參考:《Linux Shell 脚本攻略(第 2 版)》
Shell 中字符串、数值的比較
linux 进程监控和自己主动重新启动的简单实现
来源: http://www.bubuko.com/infodetail-2270071.html