您的位置:首页 > 运维架构 > Linux

linux下脚本书写注意事项

2013-12-18 18:16 330 查看
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 -
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: