linux – Bash Script为两个但是相反的字符串测试返回true
在我运行我输入的脚本之前
以下是test1.script文件
输出是:
无论我使用什么“”或“”或[或[结果是相同的.上述脚本可以找到CPIC_MAX_CONV变量. 我在Linux / CentOS 6.3上运行它. 这个想法很简单:找出CPIC_MAX_CONV是否在环境中定义并返回它的值.如果有空的空间,那么当然系统中不存在变量. 最佳答案
为什么你总能成真?让我们先在您的终端中播放一下:
您认为输出是什么? (试试吧!)以下是什么?
(试试吧!). 好吧,所以似乎非空字符串等同于真实表达式,空字符串(或未设置变量)等同于false表达式. 你做了以下几点:
和
所以你给了一个非空字符串,这是真的! 为了执行测试,您实际上需要令牌之间的空格:
代替.现在,您的测试将更好地编写为:
(没有子壳,只有一个测试). 关于你的脚本风格还有更多要说的.没有冒犯,我会说这真的很糟糕: >不要使用反引号!请改用$(…)构造.因此:
>不要使用函数blah来定义函数.您的功能应该被定义为:
哦,我使用了local关键字,因为我猜你不会在函数cpic之外使用变量var. 现在,函数cpic的目的是什么,特别是你定义变量var的东西?这很难描述(因为有很多你没有想到的情况). (顺便说一下,你的grep在这里似乎没用).以下是您忽略的一些案例: >导出的变量名为somethingfunnyCPIC_MAX_CONVsomethingevenfunnier
好的,我不想描述你的行正在做什么,但我猜你的目的是知道变量CPIC_MAX_CONV是否设置并标记为导出,对吧?在这种情况下,你会更好:
它将更高效,更强大. 哦,我现在只是阅读你的帖子的结尾.如果你想告诉我是否设置了变量CPIC_MAX_CONV(对于某些非空值 – 似乎你不在乎它是否标记为导出,如果我错了就纠正我),它甚至更简单(它会效率更高):
也会这样做! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – SSH问题:从套接字读取失败:由对等方重置连接
- LG4725 【模板】多项式对数函数(多项式 ln)
- 如何找出谁在Linux服务器上删除文件?
- linux – 如何从ubuntu上的archive / zip手动安装eclipse-C
- c – pthread_create linux内核2.4.20和2.4.36的差异
- linux – 为什么只有在按Enter键后才能通过串行连接收到字符
- linux虚拟环境搭建
- dpkg: error processing package xxx (--configure)的解决方
- Linux将权限设置为文件夹及其所有子文件或文件夹
- Linux – AIX 5.3上的VIM编辑器6.3中的语法着色不能正常工作