Linuxコマンドで改行文字を使用する

Linuxコマンドで改行文字を使用する

コマンドラインからコマンドを実行しようとしています(リモートUbuntuシステムのmoba xtermにコピーして貼り付けるだけです)。コマンドに改行文字が含まれているので、$(command)を使用することにしました。これは私が試しているコマンドです。

docker build -t mytag --build-arg SSH_PRIVATE_KEY=$(cat <<EOF
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAy8QlGkj4OoK4/i3Sxhpag4k/S/SsDzjMwqM2Sc5qeE2EpuqH
@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^
@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^
@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^
@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^
KaAM3nF1tnWa1YhDRxOGaq6386hEdB/i05ZFdLjfSALo56UN7mC5
-----END RSA PRIVATE KEY-----
EOF
) .

どういうわけかsshキーをコマンドに貼り付ける必要があります。上記のコマンドは機能しません。

bad flag syntax: -----END
See 'docker build --help'.

ベストアンサー1

キーは複数の単語で構成されるため、コマンドの置換は引用符で囲む必要があります。

docker build -t mytag --build-arg SSH_PRIVATE_KEY="$(cat << EOF
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAy8QlGkj4OoK4/i3Sxhpag4k/S/SsDzjMwqM2Sc5qeE2EpuqH
@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^
@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^
@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^
@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^%&(&)@#$%$#^$%&^%*&^*&^
KaAM3nF1tnWa1YhDRxOGaq6386hEdB/i05ZFdLjfSALo56UN7mC5
-----END RSA PRIVATE KEY-----
EOF
)" .

おすすめ記事