linux - 与 linus 条件 '-z' '-n' 混淆
问题描述
这是我的脚本:
#!/bin/bash
read -p "para:" teatp
if [ -z $teatp ]; then
echo '-z is ture'
else
echo '-z is false'
fi
if [ -n $teatp ]; then
echo '-n is ture'
else
echo '-n is false'
fi
当我什么都不输入并按回车时,结果是
para:
-z is ture
-n is ture
另一方面,当我输入一些东西并按回车时,结果是
para:qwer1234
-z is false
-n is ture
让我感到困惑的是第一个结果-n is ture
。我认为-n
and-z
是反义词,但为什么结果是一样的呢?一定有什么我忽略或误解的。如果有人能指出,我将不胜感激
解决方案
#testp应该用双引号引起来吗?喜欢:
[ -n "$teatp" ]
推荐阅读
- rust - 如何将结构存储到 Rust 中的变量中?
- vue.js - NuxtJS - 在安装时设置头部标题/描述?
- python - 在一个函数中使用另一个函数不适用于 multiprocess.Pool
- ios - 将字典数组转换为字典并初始化模型
- jenkins - Openshift CLI - 使用模板和 oc new-app 更新应用程序
- angular - 一个角度模块可以有多个路由模块吗?
- node.js - 如何从 ng-model 获取和发布 2 个对象?
- django - Django 中 REST API 的目录结构应该是什么?
- jquery - 表格中的嵌入表单和 ajax 无法正常工作
- node.js - 如何在 linux 上运行打包的电子应用程序?