【发布时间】:2015-05-01 01:03:38
【问题描述】:
我有下一个脚本,当尝试比较变量值是否等于“NO”或“SI”(西班牙语中是)时,由于某种原因它不起作用,我一直在通过 else (SI) 虽然变量中的实际值为“否”。它甚至被打印在电子邮件主题中。
我担心我可能是一些我看不到的额外隐形角色,但它就在那里?
这是脚本:
#!/usr/bin/ksh
VAR=$(/home/userName/scripts/loadedresource.ksh | egrep 'SI|NO')
MAIL_FILE="testfile.txt"
rm -f $MAIL_FILE
echo "From:Script" > $MAIL_FILE
echo "To:Me<me@company.com>" >> $MAIL_FILE
echo "Subject:RESOURCE LOADED-> $VAR" >> $MAIL_FILE
echo "Content-Type: text/html" >> $MAIL_FILE
echo "<html>" >> $MAIL_FILE
echo "<body style='font-family:calibri;font-size:14px;'>" >> $MAIL_FILE
if [ "$VAR" == "NO" ]
then
echo "<h2> Resource not loaded, please open ticket </h2>" >> $MAIL_FILE
else
echo "<h2> Resource loaded successfully </h2>" >> $MAIL_FILE
fi
mail me@company.com < $MAIL_FILE
【问题讨论】:
-
使用
ksh -x yourscript查看执行过程中实际发生了什么。 ksh 有许多不同的实现,因此很难给出一个保证正确的答案。 -
...另外,使用
set -x进行调试将正确通知您任何隐藏字符。 -
另外,不要每行使用一次
>>$MAIL_FILE- 这是非常低效的(它会为每个回显重新打开文件)。 -
另外,不要在 shell 中对本地变量使用全大写的变量名;按照惯例,这些名称是为环境变量和内置函数保留的。
标签: variables comparison ksh