在Linux命令中使用换行符

在Linux命令中使用换行符

我正在尝试在命令行中运行命令(只需将其复制并粘贴到 moba xterm 到远程 Ubuntu 计算机)。该命令包含换行符,因此我决定使用 $(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
)" .

相关内容