bash_profile 在文件调用后停止

bash_profile 在文件调用后停止

我的 .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

将别名websitecompiledo_cron,并立即执行do_config(不是将其包含在别名中)。你想要的是:

alias websitecompile='do_cron && do_config'

...这将在别名中包含这两个命令。

答案2

来自 Bash 文档别名:

对于几乎所有用途,shell 函数都优于别名。

websitecompile () { do_cron && do_config; }

答案3

我将检查 do_cron() 内执行的每个命令的退出状态,并在执行良好时返回正确的函数状态。我认为某些命令正在以意外状态退出,导致 do_cron && do_config 条件失败。

相关内容