
ホストファイルに特定のIPを追加しようとしています。このIPは2つの異なるコマンドを使用して取得できますが、最良のコマンドが常にそれを返すわけではありません。
最初のコマンドを確認し、IPが返された場合はその行をファイルに追加し、それ以外の場合は2番目のコマンドを使用するコマンドを作成しようとしています。
優先順位コマンド:
docker network inspect bridge | grep Gateway | grep -o -E '[0-9\.]+'
代替コマンド:
ifconfig docker | grep -oP 'inet:\K[^ ]+'
私他のものならコマンドは-eq ''
またはを使用します-ne 0
が、それをパラメータとして使用してホストファイルに行を追加しようとすると機能しません。
次のようになります(ただし、シェルコマンドの1行にあります)。
if [ docker network inspect bridge | grep Gateway | grep -o -E '[0-9\.]+' -ne 0 ] ;
then sudo echo $(docker network inspect bridge | grep Gateway | grep -o -E '[0-9\.]+') "symfony.dev" >> /etc/hosts;
else sudo echo $(ifconfig docker0 | awk '/inet:/{ print substr($2,6); exit }') "symfony.dev" >> /etc/hosts;
fi
答え1
if
他のコマンドと同様に、ステートメントで収集された出力はリダイレクトまたはパイプ処理できます。
if ! docker network inspect bridge | grep Gateway | grep -o -E '[0-9\.]+'; then
ifconfig docker | grep -oP 'inet:\K[^ ]+'
fi | sudo tee -a /etc/hosts > /dev/null
root権限が必要な唯一の部分は、書き込み用に開くことである/etc/hosts
ため、出力リダイレクトをsudo tee
。