现在的位置: 首页 > 综合 > 正文

linux下脚本书写注意事项

2018年01月21日 ⁄ 综合 ⁄ 共 843字 ⁄ 字号 评论关闭

1,远程ssh执行命令中含有变量

 ssh  -n   -o StrictHostKeyChecking=no $line   "sudo  cat /root/.mysqldba_emar|awk -F '=' '\$1 ~/MYSQL_PWD/{print \$2}'"

如果想将结果存入某个变量则可以(去掉commd 部分的双引号)

pwd=`ssh  -n   -o StrictHostKeyChecking=no $line   sudo  cat /root/.mysqldba_emar|awk -F '=' ' \$1 ~/MYSQL_PWD/{print \$2}'`

其中 -n  需要注意,如果你是在while循环(ip列表)里使用ssh远程登录那么-n是必须的否则while循环只会执行一次就退出

2,sed 在指定的行后面添加一行以及使用sed 进行字符替换

sed '/144.101.124.107/a\add by sed' lidan.test 

UPDATE_SQL=`echo $UPDATE_SQL|sed  s/emarmysqldba/$PASS/g`

3,ssh远程批量执行命令 出现sudo: sorry, youmust have a tty to run sudo 

 这种情况可以执行sudo sed -i 's/Defaults    requiretty/#&/g' /etc/sudoers 来解决

4,字符串脚本中如何保留'' 或 ""

IS_BANGONG="mysql -umysqldba -pxxxx  -e "'"select count(1) num  from  mysql.user  where host like '"'124.205.%'"'"'" |awk -F '|' 'NR==2{print \$1}'" 

这种写法经常在批量更新mysql的时候使用,在运行时sql字符串会被解析为正常的sql语句:

 ... -e "select count(1) num  from  mysql.user  where host like '124.205.%' "  ...

5,回到上一次的目录

cd -

抱歉!评论已关闭.