Bash 脚本条件
Bash Script Conditions
我正在构建一个 bash 脚本来根据上一个命令发送电子邮件。我似乎遇到了困难。在脚本之外,该命令工作正常,但将其放入脚本时,它不会给出所需的结果。
这是脚本片段:
grep -vFxf /path/to/first/file /path/to/second/file > /path/to/output/file.txt
if [ -s file.txt ] || echo "file is empty";
then
swaks -t "1@email.com" -f "norply@email.com" --header "Subject: sample" --body "Empty"
else
swaks -t "1@email.com" -f "norply@email.com" --header "subject: sample" --body "Not Empty"
fi
我 运行 脚本外的命令,我可以看到有数据,但是当我在脚本内添加命令时,我得到空输出。请指教 。提前谢谢你。
你的条件永远为真,因为如果[ -s file.txt ]
失败,||
-list的退出状态就是echo
的退出状态,几乎可以保证是0. 您想将 echo
移出条件并移至 if
语句的主体中。 (为了进一步简化,只需将正文设置为一个变量并在 if
完成后调用 swaks
。
if [ -s file.txt ];
then
body="Not Empty"
else
echo "file is empty"
body="Empty"
fi
swaks -t "1@email.com" -f "norply@email.com" --header "subject: sample" --body "$body"
如果你创建file.txt
的唯一原因是检查它是否为空,你可以直接将grep
命令放在if
条件中:
if grep -vFxfq /atph/to/first/file /path/to/second/file; then
body="Not Empty"
else
echo "No output"
body="Empty"
fi
swaks -t "1@email.com" -f "norply@email.com" --header "subject: sample" --body "$body"
我正在构建一个 bash 脚本来根据上一个命令发送电子邮件。我似乎遇到了困难。在脚本之外,该命令工作正常,但将其放入脚本时,它不会给出所需的结果。
这是脚本片段:
grep -vFxf /path/to/first/file /path/to/second/file > /path/to/output/file.txt
if [ -s file.txt ] || echo "file is empty";
then
swaks -t "1@email.com" -f "norply@email.com" --header "Subject: sample" --body "Empty"
else
swaks -t "1@email.com" -f "norply@email.com" --header "subject: sample" --body "Not Empty"
fi
我 运行 脚本外的命令,我可以看到有数据,但是当我在脚本内添加命令时,我得到空输出。请指教 。提前谢谢你。
你的条件永远为真,因为如果[ -s file.txt ]
失败,||
-list的退出状态就是echo
的退出状态,几乎可以保证是0. 您想将 echo
移出条件并移至 if
语句的主体中。 (为了进一步简化,只需将正文设置为一个变量并在 if
完成后调用 swaks
。
if [ -s file.txt ];
then
body="Not Empty"
else
echo "file is empty"
body="Empty"
fi
swaks -t "1@email.com" -f "norply@email.com" --header "subject: sample" --body "$body"
如果你创建file.txt
的唯一原因是检查它是否为空,你可以直接将grep
命令放在if
条件中:
if grep -vFxfq /atph/to/first/file /path/to/second/file; then
body="Not Empty"
else
echo "No output"
body="Empty"
fi
swaks -t "1@email.com" -f "norply@email.com" --header "subject: sample" --body "$body"