我正在尝试在使用
.
获取的脚本中删除路径与路径中的特定模式匹配的所有目录。该脚本在获取时会打印警告“Substitution replacement not terminated at -e line 1.
”:
编辑:包括完整的脚本。注意这里有多个错误!
vv=`echo $0 | perl -ne 's/([0-9]+)/ and print $1'`
node_home=`ls -d /opt/node$xx* | head -1`
' `
PATH=`perl -e 'print join q{:},grep !m{/node-},split(m{[:]},$ENV{"PATH"})'`
PATH=$node_home/bin:$PATH
但是当我以交互方式在 bash 中输入第一行
PATH=
时,警告不会出现。
错误实际上来自脚本的第一行。我的意思是进行模式匹配,
m//
,而不是替换,s///
。
但是那条线实际上并没有达到我想要的效果。我想将脚本安装在多个链接名称下的某个目录中,例如
node16vars
node18vars
node20vars
但是源脚本中的
$0
实际上是 shell 的名称,例如-bash
。由于我的 shell is bash,我可以使用该行
node_major_version=`echo $BASH_SOURCE | perl -ne 'm/([0-9]+)/ and print $1'`
从安装的脚本名称中提取第一个数字。