比较两个字符串是否相等的shell代码_linux shell

比较两个字符串是否相等的办法是:
if [ "$test"x = "test"x ]; then

这里的关键有几点:
1 使用单个等号
2 注意到等号两边各有一个空格:这是unix shell的要求
3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:[: =: unary operator expected

二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.
整数比较
-eq 等于,如:if [ "$a" -eq "$b" ]
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
小数据比较可使用AWK
字符串比较
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ],与=等价
注意:==的功能在[[]]和[]中的行为是不同的,如下:
1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true
2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
3
4 [ $a == z* ] # File globbing 和word splitting将会发生
5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true
一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.
但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.
!= 不等于,如:if [ "$a" != "$b" ]
这个操作符将在[[]]结构中使用模式匹配.
大于,在ASCII字母顺序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意:在[]结构中">"需要被转义.
具体参考Example 26-11来查看这个操作符应用的例子.
-z 字符串为"null".就是长度为0.
-n 字符串不为"null"

注意:
使用-n在[]结构中测试必须要用""把变量引起来.使用一个未被""的字符串来使用! -z
或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可
以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.

时间: 2024-09-20 08:15:28

比较两个字符串是否相等的shell代码_linux shell的相关文章

ubuntu与centos中更换ip的shell代码_linux shell

代码一ubuntu与centos 复制代码 代码如下: ubuntu:#!/bin/bashecho "ipaddr:"read lineecho $linesed "s/address.*$/address=${line}/g" /etc/network/interfacescentos(未测试):#!/bin/bashecho "ipaddr:"read lineecho $linesed "s/IPADDR.*$/IPADDR=$

防止ARP攻击的shell代码_linux shell

复制代码 代码如下: #!/bin/bashdeclare gw=`route -n | grep -e '^0.0.0.0'`declare gwname=`echo $gw | grep -oe '\w*$'`declare gwip=`echo $gw | grep -oe '[0-9]\{2,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'`declare gwmac=`arp -n | grep -e $gwip | grep -oe '[0

ping发现掉包报警的shell代码_linux shell

复制代码 代码如下: #!/bin/bash PING=`which ping` DATE=`date +%Y%m%d%H%M` TAIL=`which tail` LOG=./ping$DATE.log HOSTS="selboo.com.cn 221.130.191.97" COUNT=200 for myHost in $HOSTS do count=$(ping -c $COUNT $myHost | grep 'loss' | awk -F',' '{ print $3 }'

Linux Shell简介_linux shell

前言 第一篇:超级工具/Terminals,xterms 和 Shells 一.超级工具 二.为了说明 shell ,这里需要一些背景知识. 1.Terminals, xterms 与 Shells 2.终端(Terminals) 3.xterms 4.Shells 三.Shell 起步 第二篇:自动补齐/命令行的历史记录/编辑命令行/可用的 Shell 快捷方式 一.自动补齐: 二.命令行的历史记录 三.可用的 Shell 快捷方式 第三篇:命令的排列/命令的任务调度/命令的替换 一.命令的排

Linux shell实现HTTP服务示例代码_linux shell

一.前言 使用代理服务器 HAProxy 对 Mysql 做负载均衡是常用方案,为提高可用性,当某个 Mysql 出现问题时,例如服务器故障了,或者数据复制中断了,最好可以让 HAProxy 马上知道,然后停止向其转发请求 HAProxy 如何知道 Mysql 是否有问题呢? 二.解决思路 (1)编写一个shell脚本,检查 mysql 的状态,然后输出结果,例如状态正常时,返回状态码200及正确信息,否则返回状态码503及错误信息 (2)实现一个HTTP服务,有请求连接后,调用上面的检查脚本,

一波实用的Bash Shell整理_linux shell

作为一个命令行探索者,你或许发现你自己一遍又一遍重复同样的命令.如果你总是用ssh进入到同一台电脑,如果你总是将一连串命令连接起来,如果你总是用同样的参数运行一个程序,你也许希望在这种不断的重复中为你的生命节约下几秒钟. 解决方案是使用一个别名(alias).正如你可能知道的,别名用一种让你的shell记住一个特定的命令并且给它一个新的名字的方式.不管怎么样,别名有一些限制,它只是shell命令的快捷方式,不能传递或者控制其中的参数.所以作为补充,bash 也允许你创建你自己的函数,这可能更长一

linux Shell入门:掌握Linux,OS X,Unix的Shell环境_linux shell

在Linux或类Unix系统中,每个用户和进程都运行在一个特定环境中.这个环境包含了变量.设置.别名.函数以及更多的东西.下面是对Shell环境下一些常用命令的简单介绍,包括每个命令如何使用的例子,以及在命令行下设定你自己的环境来提高效率. 找出你当前的shell 在终端应用中输入下面命令中的任意一个: ps $$ ps -p $$ 或者 echo "$0" 输出范例: 图1:找出当前的shell 找出所有已安装的shell 找到已安装shell的完整路径: type -a zsh t

对用户输入的判断的shell实现代码_linux shell

今天的案例是将 对用户输入的判断的 #!/bin/sh # validint -- Validates integer input, allowing negative ints too. function validint { # Validate first field. Then test against min value $2 and/or # max value $3 if they are supplied. If they are not supplied, skip these

linux下mysql如何自动备份shell脚本_linux shell

Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库.其实非常简单,主要就是使用 MySQL 自带的 mysqldump 命令. #!/bin/bash # Shell script to backup MySql database # To backup Nysql databases file to /backup dir and later pick up by your # script. You can s