【发布时间】:2019-12-04 21:16:13
【问题描述】:
我想根据两个条件将文件分类到文件夹中,但它不会评估这两个条件。条件基于从与特定主题相对应的文本文件 (index.txt) 读取的值,并且值编码为 0 或 1
Subid DX SEX
XXXX 0 0
YYYY 1 0
代码如下
#!/bin/sh
d=XXXX
dx=$(awk '{if($1=='$d'){print $2}}' index.txt)
sex=$(awk '{if($1=='$d'){print $3}}' index.txt)
if [ "$dx" == "0" ] && [ "$sex" == "0" ];then
commands
fi
我尝试使用双括号 [[ <condition 1> ]] && [[ <condition 2> ]];、折叠括号 if [ <condition1> && <condition2> ];、括号,并使用 -eq 代替 ==,但它们仍然没有进行评估,也没有打印错误。我错过了什么?
【问题讨论】:
-
$x和$y设置在哪里?正如你所展示的,它们将是空字符串。 -
使用
=,而不是==,使用[ ... ]。 -
请注意,shell 正在评估第一个条件;它只是发现
""(因为x未定义)不等于"0",因此&&阻止了第二个条件的评估。 -
已编辑以显示变量。不幸的是,使用单个
=并没有做到这一点 -
使用您提供的文件 (index.txt) 运行代码,您的 $dx 和 $sex 变量为空
标签: bash shell if-statement