该脚本用于ufw
使用容器名称添加新规则,而无需再次重新键入容器名称。它用于grep
获取容器名称。
这是 bash 脚本:
#!/bin/bash
echo -e "\e[92m[Docker-compose] Deleting old ufw rules...\e[0m"
sudo ufw-docker delete allow ${grep container_name: ./docker-compose.yml | awk '{print $2}'}
echo -e "\e[92m[Docker-compose] Successfully deleting old ufw rules.\e[0m"
sleep 3
echo -e "\e[92m[Docker-compose] Adding new ufw rules...\e[0m"
sudo ufw-docker allow ${grep container_name: ./docker-compose.yml | awk '{print $2}'}
echo -e "\e[92m[Docker-compose] Successfully adding new ufw rules.\e[0m"
执行这个 bash 脚本的正确方法是什么?
答案1
你从哪里得到这个脚本?为什么它似乎在尝试命令替换with ${ ... }
(这只会从 bash 中得到“错误替换”错误)而不是$( ... )
.尝试一下:
$(grep container_name: ./docker-compose.yml | awk '{print $2}')
grep
另外,当你使用时你不需要awk
(awk可以做它自己的正则表达式匹配)。最好写成:
$(awk '/container_name:/ { print $2 }' ./docker-compose.yml)
答案2
要运行该脚本,请执行以下任一操作:
设置文件的执行权限:
chmod 755 <filename>
然后运行它
./<filename>
使用作为参数调用它
bash
,无需先设置权限:bash <filename>
要查看每行执行,请使用
-x
bash -x <filename>