sh使用-n对参数进行判断无效的问题
2016-12-15 16:39
204 查看
sh使用-n对参数进行判断无效的问题,记录下来.
下面代码无效:
有参数时可以正常
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 进行判断则正常:
-----
原因可能是 所用的Linux shell 解释器对 -n 解释 , 与 预想的不一致.
-n 是否为'空',可以用下面的-n代码进行验证:
if [ $EMPTY_TEST ];then
echo "not empty"
else
echo "empty"
fi
当直接回车的时候, 输出的是
如果用 -n 进行判断 , "按说应该是和上面是一样的.但实际上,在所使用的Linux环境下,却不一样."
read EMPTY_TEST
if [ -n $EMPTY_TEST ];then
echo "not empty"
else
echo "empty"
fi
当直接回车的时候, 输出的是
not empty
下面代码无效:
# -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
相关文章推荐
- 回发或回调参数无效。在配置中使用 问题解放方法
- PocketPC2003上使用SHCreateMenuBar进行菜单显示的问题解决
- 关于ASP.NET 中使用Ajax进行异步调用问题,前台参数无法跳转到后台,提示500 internal server error
- 2. 如果两个Integer的值相等,使用==进行判断的结果是否相等(常量池问题)?
- 使用hibernate 的hql进行查询表名无效问题
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
- 回发或回调参数无效。下拉菜单中使用ajax,联动菜单引起的问题解决方案
- iOS开发工具-如何使用网络封包分析工具Charles,通过配置proxy对http、https、tcp、udp 等协议的请求响应过程交互信息进行分析、判断、解决我们移动开发中的遇到的各种实际问题。
- 解决struts2使用拦截器后参数无效问题
- Android中xml布局文件中使用include引入布局进行复用(解决使用include布局重叠,颜色设置无效问题)
- 解决使用AJax往DropDownList中动态添加数据时发生,回发或回调参数无效 的问题
- asp.net中回发或回调参数无效。在配置中使用 <pages enableEventValidation="... 问题解决
- 使用Eclipse对JUnit测试函数进行Debug时断点无效问题
- 使用repeater开发出现 回发或回调参数无效 的问题
- 如何解决mid使用过程中出现的以下问题(无效的过程调用或参数: 'mid')
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
- 回发或回调参数无效。在配置中使用 问题解放方法
- 回发或回调参数无效。在配置中使用 问题解放方法
- bitmap压缩问题, 就是使用opt 参数进行压缩。
- 使用WebView进行postUrl请求发送参数过程中数据丢失或错误的问题。