このbashスクリプトを実行したいのですが失敗しました。

このbashスクリプトを実行したいのですが失敗しました。

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)

おすすめ記事