【发布时间】:2014-02-09 04:07:54
【问题描述】:
我有一个脚本可以在我的 .deb 系统上获取和设置最新的 NodeJS:
echo "Downloading, building and installing latest NodeJS"
sudo apt-get install python g++ make checkinstall
mkdir /tmp/node_build && cd $_
curl -O "http://nodejs.org/dist/node-latest.tar.gz"
tar xf node-latest.tar.gz && cd node-v*
NODE_VERSION="${PWD#*v}"
#NODE_VERSION=python -c "print '$PWD'.split('-')[-1][1:]"
echo "Installing NodeJS" $NODE_VERSION
./configure
sudo checkinstall -y --install=no --pkgversion NODE_VERSION
sudo dpkg -i node_$NODE_VERSION
不幸的是,它不起作用;作为echo 行输出:
安装 NodeJS i8/dir-where-runnning-script-from/node-v0.10.24
它确实可以在 shell 中工作:
$ cd /tmp/node_build/node-v0.10.24 && echo "${PWD#*v}"
0.10.24
【问题讨论】:
-
什么不起作用?如果你这样做
echo "${NODE_VERSION#*v}"你应该得到相同的结果。尽管您确实应该使用"${NODE_VERSION##*v}",但"${NODE_VERSION#*v}"仅适用于您的路径不包含v -
我的路径有一个
v;见/tmp/node_build/node-v0.10.24。我需要从那个字符串中取出版本号,我用"${PWD#*v}"做。如果您查看我的问题,我会展示我得到的输出和预期的输出。 -
对不起,我的意思是在那之前有一个
v。如果你在cd_之后的脚本中echo $PWD,你会得到什么
标签: node.js bash shell installation environment-variables