警告“替换替换未终止”,仅在源 shell 脚本中

问题描述 投票:0回答:1

我正在尝试在使用

.
获取的脚本中删除路径与路径中的特定模式匹配的所有目录。该脚本在获取时会打印警告“
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=
时,警告不会出现。

bash perl
1个回答
0
投票

错误实际上来自脚本的第一行。我的意思是进行模式匹配,

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'`

从安装的脚本名称中提取第一个数字。

© www.soinside.com 2019 - 2024. All rights reserved.