我正在创建一个基本的 bash 脚本来部署一个简单的 web 应用程序。我当前的代码如下。
#!/bin/bash
clear
echo "********************************************";
echo "Hello, I'm going to deploy the QuizProject";
echo "********************************************";
git pull --all;
#Only need to execute if option is present
composer install;
echo "********************************************";
echo "All the jobs done! Cheers";
echo "********************************************";
目前我正在命令中运行此脚本
bash deploy.sh
但这将执行bash文件中的所有命令。
我想在传递特定命令时执行此操作,然后仅运行“composer install”
bash -composer deploy.sh
答案1
我理解你的问题,你想控制该功能。也许最好通过选项来完成。这是一种方法:
#!/bin/bash
do_all=1
do_git=0
do_install=0
while getopts "gi" opt
do
case $opt in
(g) do_all=0 ; do_git=1 ;;
(i) do_all=0 ; do_install=1 ;;
(*) printf "Illegal option '-%s'\n" "$opt" && exit 1 ;;
esac
done
clear
echo "********************************************";
echo "Hello, I'm going to deploy the QuizProject";
echo "********************************************";
(( do_all || do_git )) && git pull --all;
(( do_all || do_install )) && composer install;
echo "********************************************";
echo "All the jobs done! Cheers";
echo "********************************************";
如果您在不带选项的情况下调用该脚本:
bash deploy.sh
git 和 install 都会被调用。如果您使用 option -i
(或 resp. -g
)调用它,则只会完成安装(resp. git 调用):
bash deploy.sh -i
bash deploy.sh -g
您还可以通过以下方式之一指定这两个选项来执行这两项操作:
bash deploy.sh -gi
bash deploy.sh -g -i
答案2
#!/bin/bash
clear
echo "********************************************";
echo "Hello, I'm going to deploy the QuizProject";
echo "********************************************";
git pull --all;
#Only need to execute if option is present
if test "$1" = "-composer"; then
composer install;
fi
echo "********************************************";
echo "All the jobs done! Cheers";
echo "********************************************";
作为“bash deploy.sh -composer”运行脚本来执行作曲家部分。