shell的简单语法记录

来源:互联网 发布:淘宝网贝贝特卖 编辑:程序博客网 时间:2024/06/14 20:29




# 查看程序是否运行,如果没有运行则启动运行
# 如果已经运行 则打印提示行
# ps 用于查看运行的程序 aux是ps的参数,嵌入式系统可能不支持aux,所以不用aux也可以
# grep -v "grep"表示 不显示包含有“grep”字段的行,用于将自身剔除掉,grep的处理对象是行  awk的处理对象是行里面的 数据片
# ``不是单引号,而是esc下面的倒引号,它之内的内容被视为指令去执行,执行的结果被赋给前面的变量,
# if语句内的 -z 表示判断后边的值为空,如果为空则表示ps命令的执行结果为空, 也可以用 -n(后面的值不为空),只是逻辑正好相反而已
processExist=`ps aux|grep CP_APP|grep -v "grep" `
if [ -z "$processExist" ];then
    exec ./CP_APP
else
    echo "process is running"
fi


# 查看文件是否存在的方法1
# grep CP_APP表示从ls - l的结果中筛选出包含CP_APP字段的行
# $?表示 上一行命令(此处要十分注意,位置不可移动) 的执行返回值,0表示没有错误,其他值都表示有错误

ls -l | grep CP_APP


res=$?


echo $res
if [ $res == 0 ];then
echo 'found file'
else
echo 'file not exist'
fi
 
# 查看文件是否存在的方法2 
# -f表示判断文件是否存在   -x表示判断文件是否存在并具有可执行权限  -d表示判断路径是否存在


if [  -f "mmmm" ];then
echo "yes"
else
echo "no"
fi




# 输出内容到文件
# 将字符串“This is a log” 追加写入到文件logfile中
# 如果用 > 替换 >>,则会不会进行追加,而是从头写
# 如果logfile 不存在则会进行创建
echo "This is a log" >> logfile






# 延时函数
# sleep 默认以秒为单位 可使用后缀改变时间单位
# usleep 默认以us为单位


usleep 20   #延时20us


sleep 2   #延时2s
sleep 1m  #延时1分钟
sleep 1h  #延时1小时


# for循环 
# for后面的条件语句需要在双括号之内!!


for(( i=1;i<10;i++));do
echo $i
done


# 循环内容为ls命令的结果
for i in `ls`;do
echo $i
done


# 循环内容为 所有的输入参数
for i in $*;do
echo $i
done




# 获取指定文件的大小
# ls -l 的输出时文件状态,其中第五个状态就是文件大小
# awk '{print $5}' 是将由 ls -l 命令结果导入数据使用 空格(可以指定其他字符) 进行分片,并将第五个数据片输出 ,因此a 就是文件的大小了
# 花括号外的符号为单引号,如果$5 改为 $0,则输出的就是所有参数了
# grep的处理对象是行  awk的处理对象是行里面的 数据片

a=`ls -l filename | awk '{print $5}'`
echo $a


# 比较大小
if [ $a -lt 500 ];then 
echo "a less than 500"
eles
echo "a bigger than 500"
fi






#按秒为单位获取时间差
#date +%s  次数s为小写的s,
#大写的S则表示当前的描述处于一分钟内的位置,其范围为0~59
#
da1=`date +%s`
# 其他执行操作
da2=`date +%s`


res=$(($da2-$da1))
echo $res


0 0
原创粉丝点击