Shell
zjzora
这个作者很懒,什么都没留下…
展开
-
Shell脚本之awk用法
一、语法awk是一种可以处理数据、产生格式化报表的语言,功能十分强大。awk认为文件中的每一行是一条记录,记录与记录的分隔符为换行符,每一列是一个字段,字段与字段的分隔符默认是一个或多个空格或tab制表符。awk的工作方式是读取数据,将每一行数据视为一条记录(record),每条记录以字段分隔符分成若干字段,然后输出各个字段的值。awk语法:awk [options] [BEGIN]{program} [END][file]常用命令选项:-F fs:指定描绘一行中数据段的文件分隔符,默认为空格原创 2021-08-08 23:20:45 · 1010 阅读 · 0 评论 -
Shell脚本之sed命令
sed命令行(流)编辑器,非交互式的对文件内容进行增删改查的操作,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。它与文本编辑器有本质的区别:文件编辑器:编辑对象是文件行编辑器:编辑对象是文件中的行语法:sed [options] '{command}[flags]' [filename]命令选项:-e script:将脚本中指定的命令添加到处理输入时执行的命令中 多条件, 一行中要有多个操作-f script: 将文件中指定的命令添加到处理输入时执原创 2021-08-06 23:23:39 · 1213 阅读 · 0 评论 -
Shell脚本之正则表达式
egrep 相当于 grep -E1. 特殊字符^ : 锚定开头^a, 以a开头, 默认锚定一个字符$ :锚定结尾a$, 以a结尾, 默认锚定一个字符示例:egrep "^ac$" file # 精确匹配以a开头, 以c结尾egrep "^a" file # 模糊匹配以a开头egrep "c$" file # 模糊匹配以c结尾2. 匹配符:匹配字符串. : 匹配除回车以外的任意一个字符() : 字符串分组[] : 定义字符类, 匹配括号中的一个字符[原创 2021-08-06 17:36:56 · 490 阅读 · 0 评论 -
Shell范例4:nginx启动管理脚本
#!/bin/bash# nginx service manage script#variablesproc=nginxnginx_install_doc=/usr/local/nginxnginxd=$nginx_install_doc/sbin/nginxpid_file=$nginx_install_doc/logs/nginx.pid# Source function library.if [ -f /etc/init.d/functions ]; then . /etc/in原创 2021-08-04 23:24:15 · 190 阅读 · 0 评论 -
Shell脚本之函数
语法一:函数名(){ 代码块 return N}语法二:function 函数名{ 代码块 return N}实战#!/bin/bash#定义函数start(){ echo "Apache start ... [OK]"}stop(){ echo "Apache stop ... [FAIL]"}#调用函数stopstartstart#输出Apache stop ... [FAIL]Apache start ... [O原创 2021-08-03 22:31:53 · 63 阅读 · 0 评论 -
shell脚本之case用法
case语法:case 变量 in条件1) 执行代码块1;;条件2) 执行代码块2;;.....esac注: 每个代码块执行完毕要以;;结尾代表结束,case结尾要以倒过来写的esac来结束。案例:#!/bin/bashread -p "num: " ncase $n in1) echo haha;;2) echo hehe;;*) echo "1|2";;esac...原创 2021-08-03 22:12:07 · 142 阅读 · 0 评论 -
shell脚本之until
until介绍: 和while正好相反,until是条件为假开始执行,条件为真停止执行。语法:until [ condition ] # 注意,条件为假until才会循环,条件为真,until停止循环 do commands代码块done案例:打印10-20#!/bin/bashnum=10until [ $num -gt 20 ];do echo $num num=$((num+1))done...原创 2021-08-03 21:53:30 · 461 阅读 · 0 评论 -
Shell脚本之while循环语句
语法while [ condition ] # 注意: 条件为真,while才会循环,条件为假,while停止循环 do commandsdonewhile实战#!/bin/bashread -p "NUM: " num1while [ $num1 -gt 0 ] do echo "大于"done原创 2021-07-31 17:55:36 · 394 阅读 · 0 评论 -
Shell脚本之循环控制
continue:本次循环结束,可以开始下一次循环#!/bin/bashfor ((i=1;i<10;i++)) do if [ $i -eq 5 ];then #本次循环结束,可以开始下一次循环 continue fi echo $idonebreak:跳出循环,但继续执行后续代码。如果循环多层嵌套,循环从里往外排序0-N,如果想跳出某层循环,break N# 要求用户输入一个字母,当输入Q的时候退出#!/bin/bashfor(( ;; )) do原创 2021-07-31 17:22:33 · 193 阅读 · 0 评论 -
Shell范例3:监控主机存活的状态
#!/bin/bashfor (( ;; )) do ping -c1 $1 &>/dev/null if [ $? -eq 0 ] then echo "`date +"%F %H:%M:%S"`: $1 is Up." else echo "`date +"%F %H:%M:%S"`: $1 is Down." fi #脚本节奏控制, 生产环境建议在1min以上 sleep 60done...原创 2021-07-31 17:01:02 · 96 阅读 · 0 评论 -
Shell脚本之for循环
语法格式语法一:for var in value1 value2 ...... do commandsdone示例:# 循环输出1-9数字#!/bin/bashfor i in `seq 1 9` do echo $idone语法二:# C式的for命令for ((变量; 条件; 自增减运算)) do 代码块done示例1:#!/bin/bashfor ((i=1;i<10;i++)) do echo $idone示例2:#!/bin原创 2021-07-31 16:39:53 · 350 阅读 · 0 评论 -
Shell脚本之if语句
语句格式:语法一:单if语句if [ condition ] # condition值为true or false then commandsfi语句二:if-then-else语句if [ condition ] then commandselse command2fi示例:#!/bin/bash# 登录用户是root 输出管理员,你好# 登录的是普通用户 输出guest, 你好if [ $USER == 'root' ] then echo "管理原创 2021-07-30 22:31:33 · 6157 阅读 · 0 评论 -
Shell脚本之数组
基本数据数组语法数组名称=(元素1 元素2 元素3)数组读出${数组名称[索引]}数组赋值方法一:一次赋一个值array0[0]='tom' 方法二:一次赋多个值 array2=(tom jack alice) array3=(`cat /etc/password`)查看数组declare -a访问数组元素echo ${array[0]} # 访问数组中的第一个元素echo ${array[@]} # 访问数组中所有元素,等同于echo原创 2021-07-29 23:25:00 · 211 阅读 · 0 评论 -
Shell脚本之变量
变量分类:本地变量:用户私有变量,只有本用户可以使用,保存在家目录下的.bash_profile、.bashrc文件中全局变量:所有用户都可以使用,保持在/etc/profile、/etc/bashrc文件中用户自己定义变量:用户自定义,比如脚本中的变量变量定义:格式:变量名=值(变量名与等号之间不能有空格)变量命名规则:命名只能使用英文字母、数字和下划线,首个字符不能以数字开头;中间不能有空格,可以使用下划线(_);不能使用标点符号;不能使用bash里的关键字读取变量内容:$变量原创 2021-07-28 22:59:28 · 83 阅读 · 0 评论 -
Shell脚本之read用法
read: 默认接受键盘的输入,回车符代表输入结束read命令选项:-p : 打印信息-t : 限定时间-s :不回显-n: 输入字符个数#!/bin/bashclear#echo -n -e "Login: "#read accread -p "Login: " accecho -n -e "Password: "read -s -t5 -n6 pw # -s 不回显 -t5 超时5s退出echo "account: $acc password: $pw原创 2021-07-28 22:25:01 · 2274 阅读 · 0 评论 -
Shell范例2:统计指定单词出现次数
#!/bin/bashif [ $# -lt 1]; then echo "ERROR: you should input 2 words at least" exit -1fiFILE=$1WORDS_NUM=$#-1for n in $(seq $WORD_NUM)do shift sed -e "s/[^a-zA-Z]/\n/g" $FILE | grep -v ^$ | sort | uniq -c | grep "^$1$"done# 执行>原创 2021-07-22 20:31:35 · 620 阅读 · 0 评论 -
Shell脚本之shift用法
shift:用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理shift(shift 1)命令每执行一次,变量的个数($#)减一(之前的$1变量被销毁,之后的$2就变成了$1),而变量值提前一位。同理,shift n后,前n位参数都会被销毁,如:输入5个参数(a b c d e),那么$1=a,$2=b,$3=c,$4=d,$5=e,执行shift 3操作后,前3个参数a、b、c被销毁,就剩下了2个参数:d,e(这时d=$1,e=$2,其中d由¥...原创 2021-07-22 15:41:39 · 4064 阅读 · 0 评论 -
Shell脚本之uniq用法
uniq用于检查文本文件中重复出现的行列,一般与sort命令结合使用语法:uniq [-cdu] [-f<栏位>] [-s<字符位置>] [-w<字符位置>] [输入文件] [输出文件]参数:-c:在每列旁边显示该行重复出现的次数-d:仅显示重复出现的行列-f<栏位>:忽略比较指定的栏位-s<字符位置>:忽略比较指定的字符-u:仅显示出一次的行列-w<字符位置>:指定要比较的字符[输入文件]:制定已排序好的文本文件原创 2021-07-22 14:45:51 · 582 阅读 · 0 评论 -
Shell脚本之grep用法
grep:强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来。用法:grep [选项] ‘搜索字符串’ filename选项:-a:以文本文件方式搜索-c:计算找到的符合行的次数-i:忽略大小写-n:顺便输出行号-v:反向查找,即找没有搜索字符串的行示例:> grep -n 'the' regular_express.txt # 搜索有the的行,并输出行号> grep -nv 'the' regular_express.txt # 搜索没有t原创 2021-07-22 11:33:52 · 2654 阅读 · 0 评论 -
Shell脚本之echo用法
echo:用于字符串的输出用法:echo [选项] string选项:-n: 不换行输出-e: 处理特殊字符若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:\a:原创 2021-07-22 10:20:59 · 4877 阅读 · 0 评论 -
Shell脚本之seq用法
seq: 用于生成从一个数到另一个数之间的所有整数。用法:seq [选项] 尾数seq [选项] 首数 尾数seq [选项] 首数 增量 尾数选项:-f, --format=FORMAT : 指定输出格式-s,–separator=STRING : 指定分隔符-w,–equal-width: 指定输出数字同宽例:> seq 1 512345> seq -f "%3g" 1 3 # 数字位数为三位,不足补空格123> seq -f "%03原创 2021-07-22 09:50:54 · 1775 阅读 · 0 评论 -
Shell范例1:计算人均收入最高家庭
随机产生了一组测试数据,文件名为income.txt1 3 44902 5 38963 4 31124 4 47165 4 45786 6 53997 3 50898 6 30299 4 619510 5 5145说明:上面的三列数据分别是家庭编号、家庭人数、家庭月总收入。实现#!/bin/bash[ $# -lt 1 ] && echo "please input the income file!" && exit -1[ ! -f $1 ]原创 2021-07-22 09:30:34 · 84 阅读 · 0 评论 -
Shell传递参数
我们可以在执行Shell脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n代表一个数字,1为执行脚本的第一个参数,2为执行脚本的第二个参数,以此类推…$0 : 执行的文件名(包含文件路径)$1: 执行脚本的第一个参数$2: 执行脚本的第二个参数$3: 执行脚本的第三个参数......$#:传递到脚本的参数个数$*:以一个单字符串显示所有向脚本传递的参数,以"$1 $2 ... $n"的形式列出所有参数$@:与$*相同,以"$1" "$2" ... "$n"的形式输出所有参数$$:脚本原创 2021-07-21 16:38:23 · 58 阅读 · 0 评论 -
Shell运算符
expr计算原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如awk和expr,expr最常见。#!/bin/bashval=`expr 2 + 2`echo "两数之和为: $val"注:表达式和运算符之间要有空格,必须写成 2 + 2完整的表达式要被 ``包含算术运算符下表列出了常用的算术运算符,假定变量a为10,变量b为20:`expr $a + $b` # 加法,结果为30`expr $a - $b` # 减法,结果为-10`expr $原创 2021-07-21 16:14:11 · 88 阅读 · 0 评论 -
shell脚本执行方法
方法一:# 切换到shell脚本所在目录,且该脚本具备可执行权限./test.sh方法二# 直接使用bash或sh来执行shell脚本bash test.sh# 或sh test.sh方法三. test.sh方法四source test.sh原创 2021-07-21 10:48:54 · 65 阅读 · 0 评论