shell编程风格

1.常量定义在最前面,但是注意shell是解释性的,逐条解释,不能出现:

#!/bin/bash
echo $input1
input1=$1
#打印结果为空
2.命令使用前最好不要加路径,防止跨平台出现问题:

/bin/cp source destination
#最好换成
cp -rf source destionation

3.[ ] 不加双引号判断时,注意不要出现语法错误

input1=$1
[ $1 = 1 ]
#如果输入为空,则出现语法错误
#可以改成
[ x$1 = x1 ]
#或者直接加双引号
[ "$1" = "1" ]
4.简写命令,提高效率

ls | grep .sh
#过滤了当前目录中含有.sh的文件
ls *.sh
#直接过滤出来了后缀是.sh的文件
5.获取文件名前缀、后缀

#前缀
fileNamePrefix=${fileName%.*}
#后缀
fileNameSuffix=${var#.*}


6.命令后台执行

nohup node ${fileNamePrefix}.js >>/cloudEng/log/iniNodeJs.log 2>&1 &

7.sed命令

sed -i "${accountResultLineNum},${accountResultLineNum}c ${userName} = ${userNewPassword}" ${passwordFilePath}
#把某行的内容替换成 用户名 = 密码

8.给文件加锁执行命令
flock -e -w 3 /var/lock/svnLock/passwdLock -c `fun` &>>$logFile
#使用排它锁锁住文件,如果被锁,等待3秒,执行函数

9.ssh无严格认证链接到远程,获取某个日志文件的倒数多少行,写入到本地文件中
ssh -o StrictHostKeyChecking=no ${projectDeployAddr} "tail -n $lineNumber $logFile" > $file

10.内置变量$LINE,可以用来标志出出错的行号

function error_exit {
  echo $(date --rfc-2822): "$1" &>>$logFile
  echo 1
  exit 1
} 
error_exit "${LINENO}:failed, can not ping to ${svnClientIpAddress}"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值