写一个跨目录的sh脚本,支持选择部署某个或多个前端项目且可以选择部署环境
时间: 2023-11-28 16:51:37 浏览: 26
假设我们的目录结构如下:
```
/home/project/
├── frontend1
│ ├── deploy.sh
│ ├── index.html
│ ├── script.js
│ └── style.css
├── frontend2
│ ├── deploy.sh
│ ├── index.html
│ ├── script.js
│ └── style.css
└── frontend3
├── deploy.sh
├── index.html
├── script.js
└── style.css
```
其中每个前端项目都有自己的 `deploy.sh` 部署脚本,可以根据环境进行部署。为了实现跨目录执行这些脚本,我们可以使用绝对路径来引用它们。
以下是一个示例脚本,可以让用户选择要部署的前端项目以及要部署的环境。
```
#!/bin/bash
# 获取当前脚本所在的目录
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
# 部署前端项目的函数
function deploy_frontend() {
local PROJECT_PATH=$1
local ENV=$2
cd $PROJECT_PATH
bash deploy.sh $ENV
}
# 输出可选的前端项目
echo "请选择要部署的前端项目:"
select PROJECT in "frontend1" "frontend2" "frontend3"; do
case $PROJECT in
frontend1) PROJECT_PATH="$DIR/frontend1"; break;;
frontend2) PROJECT_PATH="$DIR/frontend2"; break;;
frontend3) PROJECT_PATH="$DIR/frontend3"; break;;
*) echo "错误的选择,请重新选择" ;;
esac
done
# 输出可选的部署环境
echo "请选择要部署的环境:"
select ENV in "dev" "test" "prod"; do
case $ENV in
dev) break;;
test) break;;
prod) break;;
*) echo "错误的选择,请重新选择" ;;
esac
done
# 执行部署
deploy_frontend $PROJECT_PATH $ENV
```
用户只需要在终端中运行这个脚本,就可以选择要部署的项目和环境,然后自动执行相应的部署脚本。