我的 .bash_profile 中有以下代码,它可以自动执行我需要运行的几个文件写入任务。
# Compile cron jobs for server
do_cron()
{
cd ~/Sites/MAMP/mywebsite/.ebextensions && sed 's/WEBSITE_URL/mywebsite.com/g' ./cron_jobs_sample.txt > ./cron_jobs.txt
}
# Compile config file so that we push to the right server
do_config()
{
cd ~/Sites/MAMP/mywebsite/.elasticbeanstalk/ && echo "[global]
ApplicationName=xxxx
DevToolsEndpoint=xxxx
EnvironmentName=xxxx
Region=xxxx" > ./config
}
# Do compiling
alias websitecompile=do_cron && do_config
我只是简单地调用:
$ websitecompile
它运行我的任务。
问题是它运行do_cron
得很好,但do_config
无法运行。如果我将代码切换为do_config
先运行,则两者都可以正常运行。
alias websitecompile=do_config && do_cron
所以do_cron
似乎有什么东西杀死了这个过程。我想继续扩展这些命令,所以有什么方法可以阻止它停止。
我运行的是 Max OS X Mavericks。
我能做些什么来使这项工作按预期进行,有什么想法吗?
答案1
脚本摘录中是否缺少引号?因为命令:
alias websitecompile=do_cron && do_config
将别名websitecompile
为do_cron
,并立即执行do_config
(不是将其包含在别名中)。你想要的是:
alias websitecompile='do_cron && do_config'
...这将在别名中包含这两个命令。
答案2
答案3
我将检查 do_cron() 内执行的每个命令的退出状态,并在执行良好时返回正确的函数状态。我认为某些命令正在以意外状态退出,导致 do_cron && do_config 条件失败。