ubuntu 如何根据第一个shell回显结果触发邮件?

rn0zuynd  于 2023-06-29  发布在  Shell
关注(0)|答案(1)|浏览(134)

我有两个shell脚本,一个是checking_file.sh,第二个是mailing.sh。
checking_file.sh

#!/bin/bash

filepath="/home/documents/hello.txt"

if [ -f "$filepath" ]; then
   echo "file exists"
else
   echo "file not exists"

fi

mailing.sh

#!/bin/bash

output=$(/home/documents/checking_file.sh)

if [ "$output" = "file not exists" ]; then
   echo "trigger mail to developer"
else
  echo "file is available in time no mail needed"
fi

mailing.sh 最后应该执行。两者是不同的脚本。
我在www.example.com中使用了chmod u+r+ X/home/documents/checking_file.shmailing.sh,但mailing.sh应该最后执行。mailing.sh应该读取checking_file.sh,它不应该执行checking_file.sh shell

7xzttuei

7xzttuei1#

根据OP的评论:

  • mailing.sh不应调用checking_file.sh,但应“读取”checking_file.sh的输出
  • 一种方法是让checking_file.sh将其输出写入文件…
  • 修改checking_file.sh以将其输出写入文件
  • 修改mailing.sh读取上述文件的内容

对OP的当前代码进行最小的更改:

$ cat checking_file.sh
#!/bin/bash

filepath="/home/documents/hello.txt"

if [ -f "$filepath" ]; then
   echo "file exists"
else
   echo "file not exists"
fi > /home/documents/checking_file.out               # write output to file


$ cat mailing.sh
#!/bin/bash

#output=$(/home/documents/checking_file.sh)
output=$(cat /home/documents/checking_file.out)      # read output from file

if [ "$output" = "file not exists" ]; then
   echo "trigger mail to developer"
else
   echo "file is available in time no mail needed"
fi

注意事项:

  • OP可能希望向mailing.sh添加一些逻辑,以验证checking_file.out是否确实存在
  • OP可能希望向mailing.sh添加一些逻辑来删除/重命名checking_file.out,以便重复运行mailing.sh不会再次处理相同的checking_file.out

解决OP关于不修改checking_file.sh的评论/问题……
在不修改checking_file.sh的情况下,我们可以让调用将所有输出定向到一个文件,例如:

$ /home/documents/checking_file.sh > /home/documents/checking_file.out 2>&1

相关问题