shell函数

SHELL脚本--数学运算和bc命令

核能气质少年 提交于 2019-11-29 00:57:51
使用let、(())、$(())或$[]进行基本的整数运算,使用bc进行高级的运算,包括小数运算。其中expr命令也能进行整数运算,还能判断参数是否为整数,具体用法见 expr命令全解 。 其中let和(())几乎完全等价,除了做数学运算,还支持数学表达式判断,例如数值变量a是否等于3:let a==3或((a==3)),但一般不会使用它们来判断,而是使用test命令结合条件表达式:test "$a" -eq 3。因此,本文只介绍let的赋值运算功能。 1.6.1 基本整数运算 [root@xuexi tmp]# str=10 [root@xuexi tmp]# let str=str+6 # 等价于let str+=6 [root@xuexi tmp]# let str-=5 # 等价于let str=str-5 [root@xuexi tmp]# echo $str 11 let也可以使用(( ))进行替换,它们几乎完全等价。且额外的功能是:如果最后一个算术表达式结果为0,则返回状态码1,其余时候返回状态码0。 如果想在命令行中做计算,则可以使用$(())或$[]。 [root@xuexi ~]# str=10 [root@xuexi ~]# echo $((str+=6)) 16 [root@xuexi ~]# echo $[str=str-6] 10 当然

MongoDB中的数据类型

空扰寡人 提交于 2019-11-29 00:30:25
MongoDB支持多种数据类型作为文档中的值。 基本数据类型 MongoDB的文档类似于JSON,在概念上和JavaScript中对象神似。JSON是一种简单的表示数据的方式,仅包含6种数据类型。这带来很多好处:易于理解、易于解析、易于记忆。但另外一方面,JSON的表现力也有限制,因为只有 null、布尔、数字、字符串、数组和对象几种类型。 虽然这些类型的表现已经足够强大,但是对于绝大多数应用来说还需要另外一些不可或缺的类型,尤其是与数据库打交道的那些应用。例如,JSON没有日期类型,这会使得出来本来简单的日期问题变得非常繁琐。只有一种数字类型,没法区分浮点数和整数,更不能区分32位和64位数字。也没有办法表示其他常用类型,如正则表达式或函数。 MongoDB在保留JSON基本的键/值对特性的基础上,添加了其他一些数据类型。 下面列出了MongoDB通常支持的一些类型,同时说明了在shell中这些类型是如何表示为文档的一部分的。 - null 用于表示空值或者不存在的字段。 - 布尔 布尔类型有两个值true和false。 32位整数 shell中这个类型不可用。前面提到,JavaScript仅支持64位浮点数,所以32位整数会被自动转换。 - 64位整数 shell也不支持这个类型。shell会使用一个特殊的内嵌文档来显示64位整数。 - 64位浮点数

命令执行漏洞函数和绕过方法

家住魔仙堡 提交于 2019-11-29 00:01:02
文章目录 常见命令函数和demo: 绕过技巧: 绕过空格过滤: 其他拼接绕过: 命令执行不回显: 利用 命令执行: 常见命令函数和demo: system 能执行php代码一般能执行shell,因为 代码要借助shell执行(应该是 封装shell 命 来源: https://blog.csdn.net/qq_41517071/article/details/100089222

shell习题-17

对着背影说爱祢 提交于 2019-11-28 22:59:39
题目要求 假设,当前MySQL服务的root密码为123456,写脚本检测MySQL服务是否正常(比如,可以正常进入mysql执行show processlist), 并检测一下当前的MySQL服务是主还是从,如果是从,请判断它的主从服务是否异常。如果是主,则不需要做什么。 参考答案 #!/bin/bash mysql="/usr/local/mysql/bin/mysql -uroot -p123456" if ! $mysql -e "show processlist" >/dev/null 2>/dev/null then echo "MySQL service is down." exit else $mysql -e "show slave status\G" 2>/dev/null >/tmp/slave.stat n=`wc -l /tmp/slave.stat|awk '{print $1}'` if [ $n -eq 0 ] then echo "This is master." else echo "This is slave." #找出Slave_IO_Running和Slave_SQL_Running是yes 还是no egrep 'Slave_IO_Running:|Slave_SQL_Running:'/tmp/slave.stat|awk -F ':

shell函数

拟墨画扇 提交于 2019-11-28 21:50:14
$? :用来获取函数返回值 [root@ipha-dev71-1 exercise_shell]# cat fun_with_return.sh #!/bin/sh funWithReturn(){ echo "这个函数会对输入的两个数字进行相加运算..." echo "输入第一个数字:" read aNum echo "输入第二个数字:" read anotherNum echo "连个两个数字分别为$aNum和anotherNum" return $(($aNum+$anotherNum)) } funWithReturn echo "两个数字之和为$?" [root@ipha-dev71-1 exercise_shell]# chmod 777 fun_with_return.sh [root@ipha-dev71-1 exercise_shell]# ./fun_with_return.sh 这个函数会对输入的两个数字进行相加运算... 输入第一个数字: 2 输入第二个数字: 3 连个两个数字分别为2和anotherNum 两个数字之和为5 来源: https://www.cnblogs.com/wang-mengmeng/p/11428188.html

shell案例-14

泄露秘密 提交于 2019-11-28 18:05:55
写一个脚本实现如下功能: 输入一个数字,然后运行对应的一个命令。 显示命令如下: *cmd meau** 1 - date 2 - ls 3 - who 4 - pwd 当输入1时,会运行date, 输入2时运行ls, 以此类推。 核心要点 case判断 题目要求 阿铭老师的参考答案 参考答案 #!/bin/bash echo "*cmd meau** 1 - date 2 - ls 3 - who 4 - pwd" read -p "Please input a number: " n if [ -z "$n" ] then echo "请输入一个纯数字,范围1-4." exit fi n1=`echo $n|sed 's/[0-9]//g'` if [ -n "$n1" ] then echo "请输入一个纯数字,范围1-4." exit fi case $n in 1) date ;; 2) ls ;; 3) who ;; 4) pwd ;; *) echo "请输入1-4的数字" ;; esac 题目要求 用shell脚本实现如下需求: 添加user_00 – user_09 10个用户,并且给他们设置一个随机密码,密码要求10位包含大小写字母以及数字,注意需要把每个用户的密码记录到一个日志文件里。 提示: 随机密码使用命令 mkpasswd 在脚本中给用户设置密码

shell脚本进阶一(for,while,continue,break,select等等)

感情迁移 提交于 2019-11-28 17:53:52
脚本进阶一 一、for循环的第二种写法: 众所周知,for有两种写法 第一种:for i in k8s-node{1..3};do setenforce 0;done 第二种写法:C语言风格 直接写怎么用: #for后必须写两个括号,又称双小括号写法 [root@linux1 ~]# cat for_2.sh #!/bin/bash for ((i=1,sum=0;i<=100;i++));do let sum+=i done echo "sum=${sum}" [root@linux1 ~]# bash for_2.sh sum=5050 二、while循环 我喜欢这样写,一直循环然后用break退出 [root@linux1 ~]# cat while_sum.sh #!/bin/bash i=1 sum=0 while true;do let sum+=i let i++ if [ $i -gt 100 ];then break fi done echo "sum=${sum}" [root@linux1 ~]# bash while_sum.sh sum=5050 while的高级用法:读取标准输入的内容实现循环 [root@linux1 ~]# cat while_2.sh #!/bin/bash while read line do echo $line done <

Shell脚本变量判断参数命令

纵饮孤独 提交于 2019-11-28 17:46:33
系统变量 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2 $? 上个命令的退出状态,或函数的返回值。成功返回0,失败返回1 $# 传递给脚本或函数的参数个数 $* 所有这些参数都被双引号引住。若一个脚本接收两个参数,$*等于$1$2 $0 正在被执行命令的名字。对于shell脚本而言,这是被激活命令的路径 $@ 被双引号(” “)包含时,与 $* 稍有不同。若一个脚本接收到两个参数,$@等价于$1$2 $$ 当前shell的进程号。对于shell脚本,这是其正在执行时的进程ID $! 前一个后台命令的进程号 文件或目录判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目录,则为真 -e file 若文件存在,则为真 -f file 若文件存在且是一个规则文件,则为真 -g file 若文件存在且设置了SGID位的值,则为真 -h file 若文件是软链接,则为真 -k file 若文件存在且设置了”sticky”位的值 -L file 若文件为符号链接,则为真 -p file 若文件存在且为一已命名管道,则为真 -r file 若文件可读,则为真 -s file 判断文件是否存在,且是否为非空,不为空,则为真 -S file

shell脚本应用(一)

a 夏天 提交于 2019-11-28 15:06:13
Shell 脚本的概念 将平时使用的各种Linux命令按顺序保存(堆叠)到一个文本文件中,添加上执行权限,就是一个Shell脚本。 ● 将要执行的命令按先后顺序保存到一个文本文件 ● 给该文件可执行权限,便可运行 ● 可结合各种Shell控制语句以完成更复杂的操作 Shell脚本应用场景 ● 重复性操作 ● 批量事务处理 ● 自动化运维 ● 服务运行状态监控 ● 定时任务执行 ● 减轻管理员负担 ● 规避费时操作 编写Shell脚本的格式: 1、#!/bin/bash 表示脚本通过以/bin/bash程序来编写 2、# 表示注释信息,例如:对编写的脚本作用进行解释,每写一段脚本之前都应该用“#”来注释以下命令执行的结果 3、定义脚本中的变量 4、定义脚本中的函数 5、脚本执行语句(判断、循环、选择等语句) 6、利用 echo 定义输出一些让人更容易看懂得信息(可以是中文也可以是英文) 执行脚本的三种方法 : l 通过绝对路径执行:/root/first.sh或进入到脚本文件所在目录 ./first.sh (需要给脚本文件添加上执行权限) l 进入到脚本文件所在目录执行 sh first.sh bash first.sh(文件可以没有执行权限) l 进入到脚本文件所在目录执行 source first.sh 或 . first.sh (文件可以没有执行权限) Shell的概念

shell-【技术干货】工作中编写shell脚本实践

和自甴很熟 提交于 2019-11-28 14:28:37
在公司项目的开发过程中,需要编写shell脚本去处理一个业务,在编写过程中发现自身对shell脚本的知识不够完善,顾整理一下,本文章主要内容来自 菜鸟教程 , 也添加了一些知识点 看完这边文章应该就可以独立完成大部分脚本得编写 shell脚本? 在说什么是shell脚本之前,先说说什么是shell。 shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行或对计算机进行控制。 shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。 shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序。 那么什么是shell脚本呢? shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。 shell脚本中最重要的就是对shell命令的使用与组合,再使用shell脚本支持的一些语言特性,完成想要的功能。 注释 “# ”开头的就是注释,被编译器忽略 单行注释: # 多行注释: :<