我一直在尝试使用以下命令运行Dockerfile
。
RUN NODE_VERSION=$(
curl -sL https://nodejs.org/dist/latest/ |
tac |
tac |
grep -oPa -m 1 '(?<=node-v)(.*?)(?=-linux-x64.tar.xz)' |
head -1
)
&& echo $NODE_VERSION
&& curl -SLO "https://nodejs.org/dist/latest/node-v$NODE_VERSION-linux-x64.tar.xz" -o "node-v$NODE_VERSION-linux-x64.tar.xz"
&& curl -SLO "https://nodejs.org/dist/latest/SHASUMS256.txt.asc"
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc
&& grep " node-v$NODE_VERSION-linux-x64.tar.xz$" SHASUMS256.txt | sha256sum -c -
&& tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt
但是,由于某种原因,我看到echo $NODE_VERSION
输出版本详细信息,但是,NODE_VERSION
详细信息在后续的 curl 命令中不可用。可能出现什么问题?
分配给$NODE_VERSION
的输出似乎包含一个换行符,这将导致大多数命令出错。
您可能希望从输出中删除换行符。类似于以下内容的内容:
NODE_VERSION=$(
curl -sL https://nodejs.org/dist/latest/ |
grep -oPa -m 1 '(?<=node-v)(.*?)(?=-linux-x64.tar.xz)' |
head -1 |
tr -d 'rn'
)
现在应该得到没有任何换行符的输出。 我删除了tac | tac
,因为这似乎是多余的。