sh使用-n对参数进行判断无效的问题
来源:互联网 发布:手机多开软件 编辑:程序博客网 时间:2024/05/17 08:41
sh使用-n对参数进行判断无效的问题,记录下来.
下面代码无效:
# -n ,非空字符串. #not work. # 长度为非0则为真. 但没有传参数$1也为真.# -n的逻辑和-z相反,然而-z是正常的,-n却不行.这是为什么 ?if [ -n $1 ]; then # -n ,非0, 有参数 echo "\$1 exist: $1"else echo "not exist."fi
有参数时可以正常
sh problem_why_-n_not_work.sh ok
$1 exist: ok
但没有参数时,也 -n $1 的值应为 false , 应该走到 else里面去,结果却没有:
sh problem_why_-n_not_work.sh
$1 exist:
这是什么原因导致的?
btw, 用-z 进行判断则正常:
if [ ! -z $1 ] # -z , 空字符串. null #work #或者是长度是否为0. 为0则为真.then echo '\$1 exist : $1'else echo "not exist!"fi
-----
原因可能是 所用的Linux shell 解释器对 -n 解释 , 与 预想的不一致.
-n 是否为'空',可以用下面的-n代码进行验证:
if [ $EMPTY_TEST ];then echo "not empty" else echo "empty" fi
当直接回车的时候, 输出的是
empty
如果用 -n 进行判断 , "按说应该是和上面是一样的.但实际上,在所使用的Linux环境下,却不一样."
read EMPTY_TEST if [ -n $EMPTY_TEST ];then echo "not empty" else echo "empty" fi
当直接回车的时候, 输出的是
not empty
0 0
- sh使用-n对参数进行判断无效的问题
- 使用hibernate 的hql进行查询表名无效问题
- 使用shc小工具对sh文件进行加密
- 脚本参数的使用(ex17.sh)
- 使用shift对不定长的参数进行处理
- input只能输入数字,对数字进行判断,且修复IE下无法使用光标,无法中间输入的问题
- linux下用cmake对caffe静态编译时-static-libstdc++参数无效的问题
- ADO.NET中使用SqlParameter添加参数时遇到的参数无效问题
- 创建使用program对无效索引进行重建
- 应用程序对Sqlserver进行SQL查询使用与不使用参数对执行计划的影响
- 使用Java对UTF8URL进行编码解码以及进行编码方式的判断
- 使用pycaffe 对caffemodel 参数进行读取
- zoo_add_auth 参数无效问题
- 对fastdfs 文件清单进行检查,打印无效的文件
- 使用mysqldump 对数据库进行备份的乱码问题
- 使用观察者模式 对activemq进行操作产生的问题
- 对NString进行nil,null 的判断
- 对复杂的表单进行判断
- 【Opencv笔记】利用VideoCapture和VideoWriter函数读取和写入视频文件
- Java反射简介
- Android学习——maven插件的安装以及关联源码的几种方式总结
- 项目3-点结构体(2)
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
- sh使用-n对参数进行判断无效的问题
- 利用Python,四步掌握机器学习
- Java Android HTTP实现总结
- Android应用实践-数独游戏
- [kpw] Kindle Paperwhite被强制升级到5.6.5后,USBNetwork无法使用
- Android - Activity的四种启动模式
- 【leetcode】61. Rotate List【java】
- [学习笔记]redis_windows之命令行之旅
- Fiddler使用总结。