sh脚本里边如何写static变量
时间: 2024-06-17 18:06:09 浏览: 11
在sh脚本中,没有static关键字,但你可以使用函数来模拟静态变量的功能。具体实现方式如下:
```
function static_var {
local var_name="static_var"
if [[ -z "${!var_name}" ]]; then
declare -g $var_name="initial_value"
fi
echo "${!var_name}"
}
# 调用静态变量
static_var # 输出 initial_value
declare -g static_var="new_value"
static_var # 输出 initial_value,而不是 new_value
```
上面的代码中,我们定义了一个函数`static_var`,它内部通过判断是否已经声明了一个名为`static_var`的全局变量,来模拟静态变量。如果全局变量`static_var`还没有被声明,那么函数就会声明并赋初值;如果已经声明了,那么函数就返回其当前值。
值得注意的是,我们在函数内部使用了`declare -g`命令,表示这是一个全局变量。这是因为在默认情况下,函数内部声明的变量都是局部变量。
相关问题
写一个跨目录部署前端项目的sh脚本
以下是一个简单的跨目录部署前端项目的 sh 脚本:
```sh
#!/bin/bash
# 前端项目路径
FRONTEND_DIR=/path/to/frontend
# 服务器上存放前端文件的路径
SERVER_DIR=/var/www/frontend
# 进入前端项目路径
cd $FRONTEND_DIR
# 安装依赖
npm install
# 打包
npm run build
# 进入服务器上存放前端文件的路径
cd $SERVER_DIR
# 备份原有文件
mv index.html index.html.bak
mv static static.bak
# 将打包生成的文件复制到服务器上
cp -r $FRONTEND_DIR/build/index.html .
cp -r $FRONTEND_DIR/build/static .
# 修改权限
chown -R www-data:www-data index.html static
# 重启服务器
service nginx restart
echo "前端项目部署完成!"
```
这个脚本假定前端项目的源码位于 `/path/to/frontend` 目录下,服务器上存放前端文件的路径为 `/var/www/frontend`。脚本会在前端项目路径下安装依赖,打包生成静态文件,然后将静态文件复制到服务器上,并修改权限,最后重启服务器。如果需要修改路径,可以根据实际情况修改 `FRONTEND_DIR` 和 `SERVER_DIR` 变量。
提供一个静态路由添加脚本
当然可以!以下是一个示例的静态路由添加本,你可以根据需要进行修改:
```bash
#!/bin/bash
# 路由目标网络
destination_network="192.168.1.0/24"
# 下一跳网关
next_hop_gateway="10.0.0.1"
# 添加静态路由
ip route add $destination_network via $next_hop_gateway
```
使用方法:
1. 将上述脚本保存为一个文件,例如 `add_static_route.sh`。
2. 打开终端,并导航到脚本所在的目录。
3. 运行以下命令来授予脚本执行权限:`chmod +x add_static_route.sh`。
4. 运行脚本:`./add_static_route.sh`。
请确保在运行脚本之前正确设置 `destination_network` 和 `next_hop_gateway` 变量,以适应你的网络环境。这样脚本将会添加一个静态路由,将 `destination_network` 中定义的目标网络流量转发到 `next_hop_gateway` 中定义的下一跳网关。
希望这可以帮到你!如果还有其他问题,请随时提问。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)