&引用;“未找到”;shell脚本中出现错误
我正在尝试编写一个脚本,它应该从xml文件中获取值 以下是xml文件:-&引用;“未找到”;shell脚本中出现错误,shell,Shell,我正在尝试编写一个脚本,它应该从xml文件中获取值 以下是xml文件:- `<manifestFile> <productInformation> <publicationInfo> <pubID pcsi-selector="P.S.">PACODE</pubID> <pubNumber/> </publicationInfo> </produc
`<manifestFile>
<productInformation>
<publicationInfo>
<pubID pcsi-selector="P.S.">PACODE</pubID>
<pubNumber/>
</publicationInfo>
</productInformation>
</manifestFile>`
我希望我的结果是p.S.,但它不断抛出错误,如:-
./abc.sh: P.S.: not found
我刚接触shell,我无法找出这里的错误是什么?在
=
后面不能有空格
运行此命令时:
Manifest= `/bin/grep 'pcsi-selector="' /LDCManifest.xml | cut -f 2 -d '"'`
与此相同:
Manifest='' `/bin/grep 'pcsi-selector="' /LDCManifest.xml | cut -f 2 -d '"'`
这让贝壳
grep
命令Manifest
设置为空字符串=
后面的空格,就可以得到想要的结果
但是,还应避免使用反勾号进行命令替换,因为它们会干扰引用。改用$(
..)
:
Manifest=$(grep 'pcsi-selector="' /LDCManifest.xml | cut -f2 -d'"')
此外,使用基于文本/正则表达式的工具,如grep
和cut
来操作XML是笨拙且容易出错的。您最好安装以下内容:
=
后面不能有空格
运行此命令时:
Manifest= `/bin/grep 'pcsi-selector="' /LDCManifest.xml | cut -f 2 -d '"'`
与此相同:
Manifest='' `/bin/grep 'pcsi-selector="' /LDCManifest.xml | cut -f 2 -d '"'`
这让贝壳
grep
命令Manifest
设置为空字符串=
后面的空格,就可以得到想要的结果
但是,还应避免使用反勾号进行命令替换,因为它们会干扰引用。改用$(
..)
:
Manifest=$(grep 'pcsi-selector="' /LDCManifest.xml | cut -f2 -d'"')
此外,使用基于文本/正则表达式的工具,如grep
和cut
来操作XML是笨拙且容易出错的。您最好安装以下内容:
=
后面不能有空格
运行此命令时:
Manifest= `/bin/grep 'pcsi-selector="' /LDCManifest.xml | cut -f 2 -d '"'`
与此相同:
Manifest='' `/bin/grep 'pcsi-selector="' /LDCManifest.xml | cut -f 2 -d '"'`
这让贝壳
grep
命令Manifest
设置为空字符串=
后面的空格,就可以得到想要的结果
但是,还应避免使用反勾号进行命令替换,因为它们会干扰引用。改用$(
..)
:
Manifest=$(grep 'pcsi-selector="' /LDCManifest.xml | cut -f2 -d'"')
此外,使用基于文本/正则表达式的工具,如grep
和cut
来操作XML是笨拙且容易出错的。您最好安装以下内容:
=
后面不能有空格
运行此命令时:
Manifest= `/bin/grep 'pcsi-selector="' /LDCManifest.xml | cut -f 2 -d '"'`
与此相同:
Manifest='' `/bin/grep 'pcsi-selector="' /LDCManifest.xml | cut -f 2 -d '"'`
这让贝壳
grep
命令Manifest
设置为空字符串=
后面的空格,就可以得到想要的结果
但是,还应避免使用反勾号进行命令替换,因为它们会干扰引用。改用$(
..)
:
Manifest=$(grep 'pcsi-selector="' /LDCManifest.xml | cut -f2 -d'"')
此外,使用基于文本/正则表达式的工具,如grep
和cut
来操作XML是笨拙且容易出错的。您最好安装以下内容:
或更简单:
grep -oP 'pcsi-selector="\K[^"]+' /LDCManifest.xml
将打印
P.S.
分配
Manifest=$(grep -oP 'pcsi-selector="\K[^"]+' /LDCManifest.xml)
或更简单:
grep -oP 'pcsi-selector="\K[^"]+' /LDCManifest.xml
将打印
P.S.
分配
Manifest=$(grep -oP 'pcsi-selector="\K[^"]+' /LDCManifest.xml)
或更简单:
grep -oP 'pcsi-selector="\K[^"]+' /LDCManifest.xml
将打印
P.S.
分配
Manifest=$(grep -oP 'pcsi-selector="\K[^"]+' /LDCManifest.xml)
或更简单:
grep -oP 'pcsi-selector="\K[^"]+' /LDCManifest.xml
将打印
P.S.
分配
Manifest=$(grep -oP 'pcsi-selector="\K[^"]+' /LDCManifest.xml)
注意:未找到可能表示shell认为它是命令。注意:未找到可能表示shell认为它是命令。注意:未找到可能表示shell认为它是命令。注意:未找到可能表示shell认为它是命令。删除空格有效,感谢您的快速响应。其他代码片段显示错误为:-./abc.sh:第3行的语法错误:`Manifest=$'出乎意料,我想我在某些地方出错了。您使用的shell是什么,@anurag
$(
..)
在bash中工作,但不是香草的/bin/sh
。明白了,谢谢!!我正在使用/bin/sh我使用echo$shell检查它删除空格工作正常,感谢您的快速响应其他代码段显示错误,如:-./abc.sh:第3行出现语法错误:`Manifest=$'出乎意料我想我出了问题您在使用哪个shell,@anurag$(
..)
在bash中工作,但不是香草的/bin/sh
。明白了,谢谢!!我正在使用/bin/sh我使用echo$shell检查它删除空格工作正常,感谢您的快速响应其他代码段显示错误,如:-./abc.sh:第3行出现语法错误:`Manifest=$'出乎意料我想我出了问题您在使用哪个shell,@anurag$(
..)
在bash中工作,但不是香草的/bin/sh
。明白了,谢谢!!我正在使用/bin/sh我使用echo$shell检查它删除空格工作正常,感谢您的快速响应其他代码段显示错误,如:-./abc.sh:第3行出现语法错误:`Manifest=$'出乎意料我想我出了问题您在使用哪个shell,@anurag$(
..)
在bash中工作,但不是香草的/bin/sh
。明白了,谢谢!!我正在使用/bin/sh我使用echo$SHELL检查了它