1. # 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的。必须要有一个判断命令执行成功与否的语句
  1. # 简单的命令可以不加结果判断符号,但是遇到解压包、sed 的命令就不往下执行了。测试过
  1. 实例1
  2.  
  3. shell脚本批量开启防火墙端口
  4.  
  5. [mysql@www ~]$ cat firewall.sh
  6. #!/bin/bash
  7. func1(){
  8. firewall-cmd --zone=public --add-port=/tcp --permanent
  9. [ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
  10. [ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
  11. [ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
  12. [ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
  13. [ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
  14. [ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
  15. [ $? -eq ] firewall-cmd --zone=public --add-port=/tcp --permanent
  16. [ $? -eq ] firewall-cmd --reload
  17. }
  18.  
  19. func1
  20.  
  21. sudo ./firewall.sh > /dev/null #这个sudo就相当于脚本里面所有命令行写上了sudo
  22.  
  23. 实例2
  24.  
  25. # shell脚本安装python、pip
  26.  
  27. 首先把pip-18.0.tar.gz Python-3.6..tgz 安装包放在 /usr/local 下面,按照顺序先安装pip,再安装python。不要先安装或只安装python,否则很容易出错,
  28.  
  29. [root@bogon ~]# cat pip-python.sh
  30. #!/bin/bash
  31. func1(){
  32. yum -y groupinstall "Development tools"
  33. [ $? -eq ] && yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
  34. }
  35.  
  36. func2(){
  37. yum remove pip -y && cd /usr/local/ && tar -xf pip-18.0.tar.gz && cd pip-18.0/ && python setup.py install
  38. [ $? -eq ] && echo "安装完成pip"
  39. }
  40.  
  41. func3(){
  42. cd /usr/local/ && tar -zxvf Python-3.6..tgz && mv Python-3.6. python3 && cd python3 && ./configure && make && make install
  43. [ $? -eq ] && mv /usr/bin/python /usr/bin/python.bak
  44. [ $? -eq ] && ln -s /usr/local/bin/python3 /usr/bin/python && ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
  45. [ $? -eq ] && whereis pip && /usr/local/bin/pip3. install --upgrade pip && /usr/local/bin/pip install paramiko
  46. [ $? -eq ] && sed -i "1c #!/usr/bin/python2.7" /usr/bin/yum
  47. [ $? -eq ] && sed -i "1c #!/usr/bin/python2.7" /usr/libexec/urlgrabber-ext-down
  48. [ $? -eq ] && sed -i "1c #!/usr/bin/python2.7" /usr/sbin/firewalld
  49. [ $? -eq ] && sed -i "1c #!/usr/bin/python2.7" /usr/sbin/firewalld
  50. [ $? -eq ] && systemctl restart firewalld
  51. [ $? -eq ] && echo "安装完成python"
  52. }
  53.  
  54. #脚本菜单函数
  55.  
  56. menu(){
  57. clear
  58. echo "# 1. 安装依赖包"
  59. echo "# 2. 安装pip"
  60. echo "# 3. 安装python"
  61. echo "# 4. 退出程序"
  62. }
  63.  
  64. #功能选择函数
  65. choice(){
  66. read -p "Please choice a menu[1 2 3 4]:" select
  67.  
  68. }
  69.  
  70. #程序开始
  71. while true
  72. do
  73. menu
  74. choice
  75. case $select in
  76. )
  77. func1;;
  78. )
  79. func2;;
  80. )
  81. func3;;
  82. )
  83. exit;;
  84. *)
  85. echo "choice error"
  86. esac
  87. done

shell脚本批量执行命令----必需判断上一步执行结果--没有捷径的更多相关文章

  1. shell脚本批量ssh登陆主机并执行命令

    shell脚本批量ssh登陆主机并执行命令 今天在客户现场遇到了这个问题,客户没有管理工具,无法批量登陆主机下发命令,几个个C段啊,让我一个一个登陆,.................. 所以写了个s ...

  2. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  3. shell脚本批量开启防火墙端口

    # 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的.必须要有一个判断命令执行成功与否的语句 # 简单的命令可以不加结果判断符号,但是遇到解压包.sed ...

  4. linux系统配置文件或shell脚本批量注释

    1. 配置文件批量注释 1.1 批量注释 ① 进入命令行模式,按ctrl + v进入 visual block模式,键盘上下箭头选中多行,把需要注释的行标记起来 ② 按大写字母I,再输入注释符:# ③ ...

  5. shell脚本一条命令直接发送http请求(xjl456852原创)

    我们知道nc命令是一个网络工具.可以连接tcp/udp.也能模拟发送http请求. 现在介绍通过shell脚本,一条命令直接发送http请求. 命令如下,可以对下面的地址等信息自行修改: #!/bin ...

  6. shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出

    shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出 如: #/bin/sh local ret='sqlite3 test.db "select test ...

  7. Linux shell脚本 批量创建多个用户

    Linux shell脚本 批量创建多个用户 #!/bin/bash groupadd charlesgroup for username in charles1 charles2 charles3 ...

  8. Shell 脚本批量创建数据库表

    使用 Shell 脚本批量创建数据表 系统:Centos6.5 64位 MySQL版本:5.1.73 比如下面这个脚本: #!/bin/bash #批量新建数据表 for y in {0..199}; ...

  9. (转)shell脚本之seq命令

    shell脚本之seq命令 原文:http://blog.csdn.net/paoxiaohui/article/details/52830595 seq 用于生成从一个数到另一个数之间的所有整数. ...

随机推荐

  1. 一份令人愉快的vs代码包和资源的整理清单

    https://viatsko.github.io/awesome-vscode/ https://github.com/viatsko/awesome-vscode

  2. 一、XML DOM、XMLDocument

    一.XML DOM概述 XML 文档大小写敏感.属性用引号括起来,每一个标记都要闭合. DOM是XML文档的内存中树状的表示形式. 继承关系图: XmlNode;//XML节点 ......XmlDo ...

  3. Java锁--CyclicBarrier

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/3533995.html CyclicBarrier简介 CyclicBarrier是一个同步辅助类,允许一 ...

  4. MySql更改用户密码

    1. use mysql show tables;查看mysql数据库中的表,会看到一个user表. select * from user;查看一下这个表中是否有root用户,如果有: update ...

  5. [51Nod 1237] 最大公约数之和 (杜教筛+莫比乌斯反演)

    题目描述 求∑i=1n∑j=1n(i,j) mod (1e9+7)n<=1010\sum_{i=1}^n\sum_{j=1}^n(i,j)~mod~(1e9+7)\\n<=10^{10}i ...

  6. 搭建gitlab服务

    安装依赖 sudo yum install curl policycoreutils openssh-server openssh-clients sudo systemctl enable sshd ...

  7. java+下载+大文件断点续传

    java两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路:1.服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操 ...

  8. 齿轮 HYSBZ - 4602 (DFS实现)

    齿轮 HYSBZ - 4602 题意:很好理解就不啰嗦了. 致谢:感谢队友小明. 题解:嗯,一开始想到的是并查集,后来,就先看了另一道题,xj写dfs和暴力,就卡死了.于是来补这题了,前向星建图 题解 ...

  9. 页面嵌套iframe时,怎样让iframe高度根据自身内容高度自适应

    总体思路是这样的,因为iframe里页面的内容是动态加载的,而且电脑屏幕宽度发生变化时,也得相应的去改变iframe标签的高度(如果高度确定就不用这么麻烦了): 首先,我们在父页面中定义一个方法,用来 ...

  10. lightgbm用于排序

    一. LTR(learning to rank)经常用于搜索排序中,开源工具中比较有名的是微软的ranklib,但是这个好像是单机版的,也有好长时间没有更新了.所以打算想利用lightgbm进行排序, ...