shell脚本

Shell 流程控制

匿名 (未验证) 提交于 2019-12-03 00:19:01
Shell 流程控制 和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <? php if ( isset ( $_GET [ "q" ])) { search ( q ); } else { // 不做任何事情 } 在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else。 if else if if 语句语法格式: if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): if [ $ ( ps - ef | grep - c "ssh" ) - gt 1 ]; then echo "true" ; fi 末尾的fi就是if倒过来拼写,后面还会遇到类似的。 if else if else 语法格式: if condition then command1 command2 ... commandN else command fi if else-if else if else-if else 语法格式: if condition1 then command1 elif condition2 then command2 else commandN fi 以下实例判断两个变量是否相等: a = 10 b = 20 if [ $a ==

shell使用ps -ef|grep xxx时不显示grep xxx进程的方法

匿名 (未验证) 提交于 2019-12-03 00:17:01
在使用ps -ef|grep xxx时会将grep xxx的进程也带出来, 而在脚本中如果想要截取此命令结果的一部分,则grep xxx的进程会显得多余,如下: [root@localhost ~]# ps -ef|grep python root 2829 1 0 Feb28 ? 00:00:13 /usr/bin/python -tt /usr/sbin/yum-updatesd root 17714 17490 0 11:46 pts/0 00:00:00 grep python 加上awk命令截取python的路径那部分则结果如下: [root@localhost ~]# ps -ef|grep python|awk ‘{print $8}’ /usr/bin/python grep 多了grep那一行,那么可以在grep xxx后再加一个grep -v 'grep’来将其去掉,如下: [root@localhost ~]# ps -ef|grep python|grep -v ‘grep’|awk ‘{print $8}’ /usr/bin/python 如此,则grep 被去掉. 原文地址:https://blog.csdn.net/diyiday/article/details/83785118 来源:博客园 作者: 星朝 链接:https://www.cnblogs

【shell脚本】批量修改扩展名===modifyExtension.sh

匿名 (未验证) 提交于 2019-12-03 00:14:01
前提:需切换到需要批量修改扩展名的目录下,运行脚本 [ root@VM_0_10_centos shellScript ]# cat modifyExtension . sh #!/bin/bash # 编写批量修改扩展名脚本,如批量将 txt 文件修改为 doc 文件 # 执行脚本时,需要给脚本添加位置参数 # 脚本名 txt doc(可以将 txt 的扩展名修改为 doc) if [ $ # -eq 0 -o $# -eq 1 ];then echo "[usage]: ./modifyExtension.sh 需修改的扩展名 修改之后的扩展名" exit 0 fi for i in `ls *.$1` do # ${i%}用法参考:https://blog.csdn.net/lihonghai2392/article/details/77868445 # ${var%} 删除变量尾部的字符(串)。"%"后可是字符串也可以使用正则匹配。${i%.*}即删除变量i后面的字符串 mv $i $ { i %.*}. $2 done echo "修改成功!" 来源:博客园 作者: HeiDi_BoKe 链接:https://www.cnblogs.com/HeiDi-BoKe/p/11669600.html

Shell编程之case多分支语句、循环语句(for、while等)、Shell函数、Shell数组

匿名 (未验证) 提交于 2019-12-03 00:14:01
case多分支语句 case语句的结构: 针对变量的不同取值,分别执行不同的命令列 case 变量值 in 模式 1 ) 命令序列 1 ;; 模式 2 ) 命令序列 2 ;; ..... *) 默认命令序列 esac 示例 : 字符类型识别: 提示用户输入一个字符; 判断出该字符是字母、数字或者其他字符。 脚本如下: [ root@localhost opt ]# vim test01 . sh #!/bin/bash read - p "请输入一个字符:" key case $key in [ a - z ]|[ A - Z ]) echo "你输入的是字母" ;; [ 0 - 9 ]) echo "你输入的是数字" ;; *) echo "你输入的是特殊符号" esac 执行结果如下: [ root@localhost opt ]# chmod + x test01 . sh [ root@localhost opt ]# ./ test01 . sh 请输入一个字符: 3 你输入的是数字 [ root@localhost opt ]# ./ test01 . sh 请输入一个字符: d 你输入的是字母 [ root@localhost opt ]# ./ test01 . sh 请输入一个字符:# 你输入的是特殊符号 [ root@localhost opt ]# 循环语句

Shell 编程 数组

匿名 (未验证) 提交于 2019-12-03 00:13:02
本篇主要写一些 shell 脚本函数的使用。 数组名=(value0 value1 vlaue2 ...) 数组名=([0]=value [1]=value [2]=vlaue ...) 列表名="value0 value1 vlaue2 ..." 数组名=($列表名) 数组名[0]="value" 数组名[1]="value" 数组名[2]="value" ... ${#数组名[@]} ${#数组名[*]} ${数组名[下标]} for v in ${数组名[@]};do echo $v;done for v in ${数组名[*]};do echo $v;done Demo #!/bin/bash num=(11 22 33 44 55) # 遍历 for v in ${num[*]} do echo $v done # 加1 for ((i=0;i<${#num[*]};i++)) do let num[i]++ echo ${num[i]} done [root@localhost ~]# vim arr.sh [root@localhost ~]# chmod +x arr.sh [root@localhost ~]# ./arr.sh 11 22 33 44 55 12 23 34 45 56 来源:博客园 作者: LinSenGeGe 链接:https://www

Shell 编程 until语句

匿名 (未验证) 提交于 2019-12-03 00:13:02
本篇主要写一些 shell 脚本 until 语句的使用。 #!/bin/bash i = 0 s = 0 until [ $i - eq 51 ]; do let s += i ; let i ++ done echo $s [ root@localhost ~]# vim sum . sh [ root@localhost ~]# chmod + x sum . sh [ root@localhost ~]# ./ sum . sh 1275 #!/bin/bash username = $1 # 判断格式是否正确 if [ $ # -lt 1 ] ;then echo "Usage:`basename $0` <username> [message]" exit 1 fi # 判断用户是否存在 if grep "^$username:" / etc / passwd > /dev/ null ; then : else echo "用户不存在" exit 1 fi # 判断用户是否在线,不在则每5s联系一次 until who | grep "$username" > /dev/ null ; do echo "用户不在线" sleep 5 done # 发送信息 mes = $ * echo $mes | write $username [ root@localhost ~

springboot项目启动和关闭shell脚本问题

匿名 (未验证) 提交于 2019-12-03 00:11:01
springboot的jar包名称yjxtapp-0.0.1-SNAPSHOT.jar 启动脚本 #!/bin/sh rm -f tpid nohup java -jar /data/apk/yjxtapp-0.0.1-SNAPSHOT.jar & echo $! > tpid echo Start Success! 关闭脚本 #!/bin/bash PID=$(ps -ef | grep yjxtapp-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{ print $2 }') if [ -z "$PID" ] then echo Application is already stopped else echo kill $PID kill $PID fi 注意编码UTF-8! 注意编码UTF-8! 注意编码UTF-8! 我被编码问题坑了一次,记一笔 来源:博客园 作者: 尽诛宵小天策义_长枪独守大唐魂 链接:https://www.cnblogs.com/tiance/p/11598086.html

Shell 脚本之编程和变量(外加实战项目)

匿名 (未验证) 提交于 2019-12-03 00:11:01
本章目的:学会编程规范,变量的相关脚本操作和知识 一.Shell 脚本的概述 二.Shell的作用 三.写第一个Shell脚本 1.写一个脚本(到BOOT目录,查看当前位置,以长格式友好显示VML开头的所有文件) [ root@localhost ~]# vim aaa . sh "随意编一个空文件以.sh为结尾" / bin / bash "开头声明,固定格式” 一个脚本 " 描述性信息可加可不加 " cd /boot/ pwd ls -lh vml* ~ ~ 2.给我们的脚本加上执行权限,看一下结果 [ root@localhost ~]# chmod + x aaa . sh [ root@localhost ~]# ./ aaa . sh //执行脚本,这是我们最常用的方式 / boot - rwxr - xr - x . 1 root root 5.7M 8 月 10 00 : 26 vmlinuz - 0 - rescue - cc65aecf945d4dde800fe3e29ee6edbc - rwxr - xr - x . 1 root root 5.7M 8 月 23 2017 vmlinuz - 3.10 . 0 - 693.el7.x86 _64 3.重定向符号" > " 管道符号" | " " > " :把左侧的命令结果重定向另一个文件或目录 [ root

Shell 脚本中 &#039;$&#039; 符号的多种用法

匿名 (未验证) 提交于 2019-12-03 00:09:02
通常情况下,在工作中用的最多的有如下几项: $0:Shell 的命令本身 $? :显示最后命令的执行情况 $#:传递到脚本的参数个数 ...... 今天将通过以上几种选项并做进一步的操作案例; 1、引用变量 引用变量时,使用 $ 符号直接来进行引用,以及包括循环变量; [root@localhost ~]# x=1024 [root@localhost ~]# echo $x 1024 利用双引号 " 将括起来的字符串支持变量插值。 [root@localhost ~]# x=1024 [root@localhost ~]# echo "x = $x" x = 1024 [root@localhost ~]# x=1024 [root@localhost ~]# echo "x = ${x}xy" x = 1024xy 使用 ${#} 获取变量字符串长度。 [root@localhost etc]# s=helloworld [root@localhost etc]# echo "s.length = ${#s}" s.length = 10 2、引用脚本或函数参数 基于引用脚本的方式,1 表示 Shell 脚本文件名,n 从 2 开始表示第 n 个参数,第 2 个参数是 $2; [root@localhost ~]# echo 'echo $1 $2 $3' > ping.sh