务必在判断字符串时,给shell变量加上引号
2011-07-20 11:03
295 查看
先我们来看看在shell中如何判断字符串为null
由上可以看出来判断字符串是否null,可以用-z 或者 直接 [ $a ] 来判断
但是我们要注意的是,给变量加上引号,这是一个好习惯, 比如 当a=“a = b”的时候,
就会给出错误答案。
所以在给变量做test的时候,务必给变量加上引号。
扩展一下, -z 是判断字符串是否为空, -n 是判断字符串不为空, 不要混淆。
如果$string为空的话, [ -n "$string" -o "$a" = "$b" ]可能会在某些版本的Bash中产生错误. 安全的做法是附加一个额外的字符给可能的空变量,
[ "x$string" != x -o "x$a" ="x$b" ] ("x"字符是可以相互抵消的).
#!/bin/bash a="a = b" if [ $a ] then echo true else echo false fi if [ "$a" ] then echo true else echo false fi if [ -z $b ] then echo true else echo false fi if [ -z "$b" ] then echo true else echo false fi
由上可以看出来判断字符串是否null,可以用-z 或者 直接 [ $a ] 来判断
但是我们要注意的是,给变量加上引号,这是一个好习惯, 比如 当a=“a = b”的时候,
if [ $a ] then echo true else echo false fi
就会给出错误答案。
所以在给变量做test的时候,务必给变量加上引号。
扩展一下, -z 是判断字符串是否为空, -n 是判断字符串不为空, 不要混淆。
如果$string为空的话, [ -n "$string" -o "$a" = "$b" ]可能会在某些版本的Bash中产生错误. 安全的做法是附加一个额外的字符给可能的空变量,
[ "x$string" != x -o "x$a" ="x$b" ] ("x"字符是可以相互抵消的).
相关文章推荐
- shell 判断变量中是否包含某个字符串
- shell中if 变量里包含字符串的判断
- shell if判断(曾经被一个字符串相等的判断纠结半小时,最后只是if后少了个空格!) 和 awk引用外部变量判断
- shell ,sed命令用变量替换字符串,单引号改为双引号
- Linux系统shell脚本判断变量文件目录+l脚本的字符串截取(转)
- shell的字符串和数字的转化(数字自动做字符串处理,变量名做字符串输出用单引号)
- shell的字符串和数字的转化(数字自动做字符串处理,变量名做字符串输出用单引号)
- shell中判断变量是否为整型,字符,字符串等的函数
- 【脚本】shell 判断变量中是否包含某个字符串
- 在Shell里面判断字符串是否为空 ,文件存在,目录存在
- Shell:环境、变量、字符串、数组
- shell判断变量是否为空
- 判断字符串变量是否为数字
- Shell脚本 字符串大小比较 字符串是否相等比较 字符串是否为空判断
- 用Shell判断字符串包含关系的方法小结
- 给JSON数据字符串中的键名加上双引号
- JS判断字符串变量是否含有某个字串的方法
- Shell脚本 字符串大小比较 字符串是否相等比较 字符串是否为空判断
- 【Shell】-- 入门笔记(1) : 变量、字符串、数组、参数及基本运算符
- shell脚本判断变量文件目录的写法