我在比较csv数据库和PHP表之间的信息。在某些情况下,PHP表格有空白'或者“空”'值。
如何确保我的if
语句中的比较实际上比较了两个值,而不是将一个值与一个'空白'进行比较。值?
这是代码片段
if [ "$CSV_PartDir" == "$PHP_PartDir" ] && [ "$CSV_PartName" == "$PHP_PartName" ]
then
echo "MATCH:[$direction / $PHP_PartDir] PN: [$part_name / $PHP_PartNam]"
match=$((match+1))
elif [ "$CSV_PartDir" != "$PHP_PartDir" ] && [ "$CSV_PartName" != "$PHP_PartName" ]
then
echo "WRONG: [$direction / $PHP_PartDir] PN: [$part_name / $PHP_PartNam]"
mismatch=$((mismatch+1))
fi
这是一个示例OUTPUT:
MATCH:[OUT / OUT] PN: [JSP-015123 / JSP-015123]
MATCH:[OUT / OUT] PN: [02118 / 02118]
MATCH:[OUT / OUT] PN: [02132 / 02132]
MATCH:[OUT / OUT] PN: [JSP-015123 / JSP-015123]
MATCH:[OUT / OUT] PN: [JSP-015123 / JSP-015123]
WRONG: [OUT / ] PN: [02132 / ]
WRONG: [OUT / ] PN: [02132 / ]
WRONG: [OUT / IN ] PN: [OH-VPS-023 / JSP-01512 ] <--- a "legitimate" comparison to be define as "wrong"
WRONG: [OUT / ] PN: [02132 / ] <--- NOT a "legitimate" comparison to be define as "wrong"
问:是否有某种方法可以检查PHP_PartName
和/或PHP_PartDir
实际上是否包含值,而if
内没有任何值。< / p>
理想情况我想打印出来&#34;错误&#34;或&#34;不匹配&#34;我的PHP值和CSV值是否不匹配所以我想压制空值。
答案 0 :(得分:0)
阅读-z
命令,特别是-n
测试为null,<html>
<head>
<script type="text/javascript" language="javascript">
</script></head>
<body>
<form name="F1">PN<input type="text" name="T1"></form>
<p><input type="button" value="Submit" onclick="dp()"></p>
</body></html>
<script>
myObject = new ActiveXObject("WScript.Shell");
function dp()
{T1 = "";
var txtfile = "A"+document.F1.T1.value+".txt";
var fso = new ActiveXObject("Scripting.FileSystemObject");
var myFile = fso.OpenTextFile(txtfile,8, true,0);
myFile.write("Test");
myFile.Close();
fso = null;
}
</script>
测试为NOT NULL。
答案 1 :(得分:0)
如果变量未设置或为null,则使用语法替换默认值,并使用您要比较的变量的值作为默认值:
if [ "${CSV_PartDir:-$PHP_PartDir}" = "${PHP_PartDir:-$CSV_PartDir}" ] && [ "${CSV_PartName:-$PHP_PartName}" = "${PHP_PartName:-$CSV_PartName}" ]
因此,如果其中一个变量是空的,它将默认为另一个变量,它们将匹配而不是说WRONG
。