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
먼저 권한을 설정하지 않고 as 인수로 호출하세요 .bash <filename>
실행된 각 줄을 보려면 다음을 사용하세요.
-x
bash -x <filename>