shell脚本知识乱集

比如比较字符串、判断文件是否存在及是否可读等,通常用"[]"来表示条件测试。

注意:这里的空格很重要。要确保方括号的空格。笔者就曾因为空格缺少或位置不对,而浪费好多宝贵的时间。

if
....; then
....
elif ....; then
....
else
....
fi
[ -f
"somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var"
] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
-r file     用户可读为真
-w
file     用户可写为真
-x file     用户可执行为真
-f file     文件为正规文件为真
-d
file     文件为目录为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s
file     文件大小非0时为真
-t file     当文件描述符(默认为1)指定的设备为终端时为真

含条件选择的shell脚本
对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,包括比较运算、判断文件是否存在等。
基本的if条件命令选项有:
- eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
-ne —比较两个参数是否不相等
-lt
—参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f —
检查某文件是否存在(例如,if [ -f "filename" ])
-d —
检查目录是否存在
几乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。

时间: 2024-11-13 08:37:50

shell脚本知识乱集的相关文章

自动化运维工程师必备的shell脚本知识

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持!一.正则表达式: 正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表达式就是处理字符串的方法,它是以行为单位来进

Zabbix3.4通过shell脚本监控redis集群

为了避免单点故障,生产环境中redis升级为集群模式,需要对redis集群进行监控,一旦有节点出现故障便触发报警.Redis有自带的redis-cli客户端,通过cluster info命令能查询到集群的运行情况,我们可以写个shell脚本,通过zabbix来调用这个脚本实现集群的监控. 一.cluster info命令的使用 命令格式: redis-cli -h [hostname] -p [port] -a [password] cluster info 1.查询集群运行情况(其中一个mas

shell脚本知识

1.Shell Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式 称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一 个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条 一条地敲命令.Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释 执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把 脚

shell脚本知识(二)命令字符操作

1.cat 不仅可以读取文件并拼接数据,他还能够从标准输入中进行读取. 用cat将输入文件的内容与标准输入拼接在一起:$ echo 'Text through stdin' | cat - file.txt 压缩空白行: 将文本中多个空白行压缩成单个: cat -s file. 移除空白行:cat  file  | tr  -s '\n' . 将连续多个'\n' 字符压缩成单个'\n' (换行符). 将制表符显示为^| :cat  -T 2.find 查找中匹配多个条件中的一个,可采用OR条件:

shell脚本知识(一) 基本知识预备

1.shell脚本一般以#!开头. 2.printf: printf "%-5s  %-10s  %-4s\n" No Name Mark.%-5s指明一个格式为左对齐且宽度为5的字符串替代(-表示左对齐),如果不用-指定对齐方式,字符串则采用右对齐.宽度指定了保留给某个变量的字符数.对Name而言,保留宽度是10. 3.获得字符串的长度:var=1213434545345     length=$(#var) 可以获得字符串长度,存放在length中. 获得使用哪种shell:ech

Shell 脚本知识回顾 (三) —— 替换、运算符、字符串、数组

一.Shell替换:Shell变量替换,命令替换,转义字符 如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: #!/bin/bash a=10 echo -e "Value of a is $a \n" 运行结果: Value of a is 10 这里 -e 表示对转义字符进行替换.如果不使用 -e 选项,将会原样输出: Value of a is 10\n 下面的转义字符都可以用在 echo 中: 转义字符

Shell脚本实现乱序排列文件内容的多种方法(洗牌问题)

洗牌问题:洗一副扑克,有什么好办法?既能洗得均匀,又能洗得快?即相对于一个文件来说怎样高效率的实现乱序排列? ChinaUnix 确实是 Shell 高手云集的地方,只要你想得到的问题,到那里基本上都能找到答案.r2007给出了一个取巧的方法,利用 Shell 的 $RANDOM 变量给原文件的每一行加上随机的行号然后根据这个随机行号进行排序,再把临时加上去的行号给过滤掉,这样操作之后得到的新文件就相当于被随机“洗”了一次: while read i;do echo "$i $RANDOM&qu

Shell 脚本 更换tomcat集群war包

运行之前将服务器弄成免ssh登陆. 配置文件没有太大的改动 可以覆盖之前的配置 profile 配置文件 bak=/home/wsm/bak webapps=/home/wsm/webapps/WSMMeasure arry=192.168.68.29 192.168.10.147 newwar=1.war deplypath=/home/wsm/deploy scp.sh 拷贝相关war和脚本到远程服务上 scp.sh #!/bin/bash #拷贝war|deploy.sh|profile

shell脚本知识(三) 正则表达式 grep sed awk

1.正则表达式 匹配给定文本中的所有单词:( ?[a-zA-Z]+ ?) ?用于匹配单词前后可能出现的空格. 匹配IP地址:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}   括号分割的4个整数. 2.grep "mach_text"  file1 file2 file3-. 递归搜索文件: grep "text" ./ -Rn 3.cut  将文本按列进切分.可以指定分割每列的定界符.在cut术语中,每列一个字段. c