写一个跨目录的sh脚本,支持选择部署某个或多个不同目录的前端项目且可以选择部署环境
时间: 2023-12-14 11:38:24 浏览: 31
以下是一个简单的跨目录部署前端项目的sh脚本,支持选择不同目录和环境:
```bash
#!/bin/bash
# 定义可选的目录和环境
declare -a dirs=("project1" "project2" "project3")
declare -a envs=("dev" "test" "prod")
# 选择要部署的目录
echo "请选择要部署的目录:"
select dir in "${dirs[@]}"; do
if [[ " ${dirs[@]} " =~ " ${dir} " ]]; then
break
else
echo "请选择正确的目录。"
fi
done
# 选择要部署的环境
echo "请选择要部署的环境:"
select env in "${envs[@]}"; do
if [[ " ${envs[@]} " =~ " ${env} " ]]; then
break
else
echo "请选择正确的环境。"
fi
done
# 进入选择的目录并部署
cd /path/to/${dir}
npm install
npm run build:${env}
```
在脚本中,我们定义了可选的目录和环境,使用 `select` 命令让用户选择要部署的目录和环境,然后进入选择的目录并执行部署命令。用户可以使用 `Ctrl-C` 来退出脚本。
相关问题
写一个跨目录的sh脚本,支持选择部署某个或多个前端项目且可以选择部署环境
假设我们的目录结构如下:
```
/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
```
用户只需要在终端中运行这个脚本,就可以选择要部署的项目和环境,然后自动执行相应的部署脚本。
写一个跨目录的sh脚本,支持选择部署某个或多个前端项目
假设你的前端项目目录结构如下:
```
- project
- frontend1
- frontend2
- frontend3
```
你可以写一个交互式的脚本,让用户选择要部署的前端项目,然后执行相应的命令。以下是一个示例脚本:
```sh
#!/bin/bash
PROJECT_DIR=/path/to/project
# Prompt the user to select the frontend projects to deploy
echo "Which frontend projects do you want to deploy?"
options=("frontend1" "frontend2" "frontend3" "all")
select opt in "${options[@]}"
do
case $opt in
"frontend1")
PROJECTS="frontend1"
break
;;
"frontend2")
PROJECTS="frontend2"
break
;;
"frontend3")
PROJECTS="frontend3"
break
;;
"all")
PROJECTS="frontend1 frontend2 frontend3"
break
;;
*)
echo "Invalid option"
;;
esac
done
# Change to the project directory
cd $PROJECT_DIR
# Deploy the selected projects
for project in $PROJECTS; do
cd $project
echo "Deploying $project..."
# Run the deployment command for each project
# For example, you can use "npm run build" to build the project
# and copy the files to the server
# Replace this command with your own deployment command
npm run build
cd ..
done
echo "Done"
```
将这个脚本保存为 `deploy.sh`,然后在终端中执行 `./deploy.sh` 即可运行。用户可以选择要部署的项目,脚本会进入相应的目录并执行部署命令。