![이 bash 스크립트를 실행하고 싶지만 실패했습니다.](https://linux55.com/image/198508/%EC%9D%B4%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EA%B3%A0%20%EC%8B%B6%EC%A7%80%EB%A7%8C%20%EC%8B%A4%ED%8C%A8%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
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>