.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条件が失敗するようです。