shell脚本

()、(())、[]、[[]]、{}的作用

老子叫甜甜 提交于 2019-12-02 20:20:33
目录 单括号(): 单中括号[ ]: 双中括号[[]]: 大括号{}: Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用 技巧小结: 字符串比较用双中括号[[ ]];算数比较用单中括号[ ]——左右留空格 算数运算用双小括号(( )) ;shell命令及输出用小括号( )——左右不留空格 快速替换用花括号{ }——左右留空格 反单引号起着命令替换的作用 单括号(): 另开命令组——小括号中的内容会开启一个子shell独立运行;括号中以分号连接,最后一个命令不需要;各命令和括号无空格 得到命令输出——a=$(command), 等同于a=$`command`,得到命令输出传递给变量a 初始化数组——array=(a b c d) 双括号(()): 省去$符号的算术运算—— for((i=0;i<5;i++)); if (($i<5)); a=5; ((a++)) 可将 $a 重定义为6;括号内支持多个表达式用逗号分开。 C语言规则运算——$((exp)),exp为符合C语言规则的运算符,表达式 跨进制运算——二进制、八进制、十六进制运算时,输出结果全都自动转化成了十进制。如:echo $((16#5f)) 结果为95 (16进位转十进制) 单中括号[ ]: 字符串比较——==和!= 整数比较——不等于:-gt:大于;-lt :小于;-eq

15-1 shell脚本进阶

亡梦爱人 提交于 2019-12-02 19:15:54
shell脚本进阶 循环 循环执行 将某代码段重复运行多次 重复运行多少次 循环次数事先已知 循环次数事先未知 有进入条件和退出条件 for, while, until for循环 for VAR in [list];do CODE done 执行机制:依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束 列表生成方式: (1) 直接给出列表 (2) 整数列表: (a) {start..end} (b) $(seq [start [step]] end) (3) 返回列表的命令 $(COMMAND) (4) 使用glob,如:*.sh (5) 变量引用 $@, $* for特殊格式 双小括号方法,即((…))格式,也可以用于算术运算 双小括号方法也可以使bash Shell实现C语言风格的变量操作 I=10 ((I++)) for循环的特殊格式: for ((控制变量初始化;条件判断表达式;控制变量的修正表达式)) do 循环体 done 控制变量初始化:仅在运行到循环代码段时执行一次 控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算,而后再做条件判断 while循环 while CONDITION; do 循环体 done CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为

shell脚本之centos批量创建用户

对着背影说爱祢 提交于 2019-12-02 18:23:06
操作环境:centos7 执行命令: cat /etc/passwd | grep zcl #确认没有zcl相关用户; mkdir -p /zcl/shell/    #创建脚本存放目录; cd /zcl/shell/      #切换至脚本目录; #编辑批量创建用户脚本; echo " #!/bin/bash" groupadd zcl_group for user in zcl1 zcl2 zcl3; do   useradd -G zcl_group $user;   echo "123456" | passwd -stdin $user; done >batch_useradd.sh chmod 750 ./batch_useradd.sh #修改脚本权限 ./batch_useradd.sh    #执行脚本 cat /etc/group    #查看用户组 cat /etc/passwd    #查看用户是否添加成功 来源: https://www.cnblogs.com/chalon/p/11757494.html

Shell脚本中的各种括号

走远了吗. 提交于 2019-12-02 17:53:14
小括号的用法 1、数组赋值 2、子Shell赋值 在子shell中变量var值为lookback,但是在上级shell中就不是这个值,可以看出是在子shell中有效的赋值 3、命令集合结果重定向 4、$()的用法 $(cmd)命令替换 5、(())的用法 增强括号的用法, 常用于算术运算比较. 双括号中的变量可以不使用$符号前缀, 只要括号中的表达式符合C语言运算规则, 支持多个表达式用逗号分开. 比如可以直接使用for((i=0;i<5;i++)), 如果不使用双括号, 则为for i in `seq 0 4`或者for i in {0..4}. 再如可以直接使用if (($i<5)), 如果不使用双括号, 则为if [ $i -lt 5 ]. 中括号的使用 1、单中括号 ①bash 的内部命令,[和test是等同的。如果我们不用绝对路径指明,通常我们用的都是bash自带的命令。if/test结构中的左中括号是调用test的命令标识,右中括号是关闭条件判断的。这个命令把它的参数作为比较表达式或者作为文件测试,并且根据比较的结果来返回一个退出状态码。if/test结构中并不是必须右中括号,但是新版的Bash中要求必须这样。 ②Test和[]中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt这种形式

mysql备份脚本(shell)

耗尽温柔 提交于 2019-12-02 17:45:27
mysql数据库shell备份脚本 任何项目的运行都离不开数据,持久化数据对于一个企业尤为重要,任何时候都不可掉以轻心,下面是我自己写的一个shell脚本,用来备份数据,分享给大家。 #!/bin/bash # 数据库连接信息 MY_user="" MY_pass="" MY_port="3306" # 环境变量 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/data/mysql_57/bin export PATH MY_data=`date "+%F"` # 脚本日志 SHELL_LOG="/root/mysql_bak.sh.log" # mysql 目录 Mysql_datadir="/data/mysql_57" Mysql_Binlog_dir="/data/mysql_57/logs/bin-log" # 备份目录 Bak_dir="/root/mysql_data" Full_dir=${Bak_dir}/full # 全量备份目录 DB_dir=${Bak_dir}/db # 单库备份目录 Binlog_dir=${Bak_dir}/binlog # 增量二进制备份目录 # Write Log shell_log(){ LOG_INFO=$1 echo "$(date "+%F

第七章 Shell正则应用

大憨熊 提交于 2019-12-02 16:38:31
1. 正则表达式概述 01. 什么是正则表达式 正则表达式 regular expression , RE是一种字符模式,用于在查找过程中匹配指定的字符。 02. 为什么要使用正则表达式? 在工作中,我们时刻面对着大量的日志,程序,以及命令的输出。迫切的需要过滤我们需要的一部分内容,甚至是一个字符串。比如: 现在有一个上千行的文件,我们仅需要其中包含"root"的行,怎么办? 此时就需要使用到正则表达式的规则来筛选想要的内容。 03. 正则表达式注意事项 1.正则表达式应用非常广泛,存在于各种语言中,例如:php,python,java等。2.正则表达式和通配符特殊字符是有本质区别的3.要想学好grep、sed、awk首先就要掌握正则表达式。4.注意正则神坑,中文符号。 2. 正则表达式规则 正则表达式描述 \转义符,将特殊字符进行转义,忽略其特殊意义 ^匹配行首,^是匹配字符串的开始 $匹配行尾,$是匹配字符串的结尾 ^$表示空行. (点)匹配换行符之外的任意单个字符 [ ]匹配包含在[字符]之中的任意一个字符 [^]匹配[^]之外的任意一个字符 [a-z]匹配[]中指定范围内的任意一个字符 ?匹配其前面的字符1次或者0次+匹配其前面的字符1次或者多次 匹配其前面的字符0次或者多次**.** *表示所有( )匹配表达式,创建一个用于匹配的字符串 {n}匹配之前的项n次

shell编程-学习

梦想的初衷 提交于 2019-12-02 15:29:23
Shell 编程入门 走进 Shell 编程的大门 为什么要学Shell? 什么是 Shell? Shell 编程的 Hello World Shell 变量 Shell 编程中的变量介绍 Shell 字符串入门 Shell 字符串常见操作 Shell 数组 Shell 基本运算符 算数运算符 关系运算符 逻辑运算符 布尔运算符 字符串运算符 文件相关运算符 shell流程控制 if 条件语句 for 循环语句 while 语句 shell 函数 不带参数没有返回值的函数 有返回值的函数 带参数的函数 Shell 编程入门 走进 Shell 编程的大门 为什么要学Shell? 学一个东西,我们大部分情况都是往实用性方向着想。从工作角度来讲,学习 Shell 是为了提高我们自己工作效率,提高产出,让我们在更少的时间完成更多的事情。 很多人会说 Shell 编程属于运维方面的知识了,应该是运维人员来做,我们做后端开发的没必要学。我觉得这种说法大错特错,相比于专门做Linux运维的人员来说,我们对 Shell 编程掌握程度的要求要比他们低,但是shell编程也是我们必须要掌握的! 目前Linux系统下最流行的运维自动化语言就是Shell和Python了。 两者之间,Shell几乎是IT企业必须使用的运维自动化编程语言,特别是在运维工作中的服务监控、业务快速部署、服务启动停止

shell命令

吃可爱长大的小学妹 提交于 2019-12-02 14:39:54
grep命令练习: 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c :计算找到 ‘搜寻字符串’ 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺便输出行号 -v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行! –color=auto :可以将找到的关键词部分加上颜色的显示喔! -A3 包含当前数据的后面三行数据, -B2 包含当前数据的前两行 0.包含jon数据的前两行和后一行 grep -n -A1 -B2 ‘Jon’ test.log 1.显示所有包含San的行 grep –n ‘San’ datafile 2.显示所有以J开始的人名所在的行 grep –n ‘^J’ datafile 3.显示所有以700结尾的行 grep –n ‘700 ’ d a t a f i l e 4. 显 示 所 有 不 包 括 834 的 行 g r e p – v n ‘ 834 ’ d a t a f i l e 5. 显 示 所 有 生 日 在 D e c e m b e r 的 行 g r e p – n ‘ : 12 / ’ d a t a f i l e 6. 显 示 所 有 电 话 号 码 的 区 号 为 284 的 行 g r e p – n ‘ : 284 − ’ d a t a f i l e 7. 显 示 所

shell脚本1

混江龙づ霸主 提交于 2019-12-02 14:18:49
数值累加 ```shell #!/bin/bash read -p "please input a number: " num s=0 for (( i=1;i<=$num;i++ )) do s=$(( $s+$i )) done echo "the sum is : $s" ``` --- 字符串拼接 ```shell #!/bin/bash # shell script read -p "please input the firstname : " firstname read -p "the lastname , please : " lastname echo -e "\nthe name is : $firstname $lastname" ``` --- 数值计算 (加,乘) ```shell #!/bin/bash # the compute numbers read -p "input a number : " num read -p "input another number : " num2 declare -i sum=$(($num+$num2)) echo -e "the sum of the two nums is $sum" echo -e "the multiply of the two nums is $(( $num * $num2 ))" `

理论+实操:shell之case语句for/while/until循环语句、函数、数组-满满的干货

♀尐吖头ヾ 提交于 2019-12-02 13:52:00
前言: 单引号表示纯符号 用双引号表字符串 case多分支语句 循环语句 for循环语句 while循环语句 until循环语句 shell函数 shell数组 一 : case语句的结构 1.1 case结构 多分支表现形式:if语句,case语句 case 语句可以使用正则表达式,正则表达式后面会去阐述 针对变量的不同取值,分别执行不同的命令程序 case 中;;表示一句话的结束 如果匹配某一个固定值,大多数用caes,其适用于某一个固定值 如果匹配某一个区间范围,大多数用if else 语句,其适用于一个范围 *后面 不需要加;; 1.2 case执行过程流程图 case针对变量的不同取值,分别执行不同的命令序列 case变量匹配的是模式,if变量匹配的是条件 1.3 case语句应用示例 1.3.1 示例1:击键类型识别 提示用户输入一个字符 判断出该字符是字母、数字或者其他字符 #/bin/bash read -p "请按个键,我可以测试年的键是字母数字或是其他字符" jian case "$jian" in [0-9]) echo "你按的是数字" ;; [a-z]|[A-Z]) echo "你按的是字母" ;; *) echo "你按的是特殊字符" esac [root@localhost opt]# sh shibiejijian.sh 请按个键