如何检查变量是否成立并且没有任何内容。

时间:2015-08-04 02:05:35

标签: bash text-processing

我在比较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值是否不匹配所以我想压制空值。

2 个答案:

答案 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。

http://wiki.bash-hackers.org/commands/classictest

答案 1 :(得分:0)

如果变量未设置或为null,则使用语法替换默认值,并使用您要比较的变量的值作为默认值:

if [ "${CSV_PartDir:-$PHP_PartDir}" = "${PHP_PartDir:-$CSV_PartDir}" ] && [ "${CSV_PartName:-$PHP_PartName}" = "${PHP_PartName:-$CSV_PartName}" ]

因此,如果其中一个变量是空的,它将默认为另一个变量,它们将匹配而不是说WRONG