&引用;“未找到”;shell脚本中出现错误

&引用;“未找到”;shell脚本中出现错误,shell,Shell,我正在尝试编写一个脚本,它应该从xml文件中获取值 以下是xml文件:- `<manifestFile> <productInformation> <publicationInfo> <pubID pcsi-selector="P.S.">PACODE</pubID> <pubNumber/> </publicationInfo> </produc

我正在尝试编写一个脚本,它应该从xml文件中获取值

以下是xml文件:-

`<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检查了它