从脚本运行命令时出现语法错误

从脚本运行命令时出现语法错误

我从文件运行一个命令时遇到问题。

当我直接在终端中执行命令时,一切正常,软件运行良好。如果我尝试从文件运行它,则一个文件始终会出错。

如果我使用此命令和完整路径直接在终端中运行它,它就可以正常工作:

/home/lukas/snap/bin/gpt /home/lukas/Desktop/automatic/test/resample_s2.xml -e -p /home/lukas/Desktop/automatic/test/resample_20m.properties -t  "/home/lukas/Desktop/automatic/outputs/processed.dim" /home/lukas/Desktop/automatic/inputs/S2A_MSIL2A_20170717T095031_N0205_R079_T34UCV_20170717T095631.SAFE/MTD_MSIL2A.xml 

当我从脚本运行此命令时,它会引发文件错误xml

#!/bin/bash

gpt=/home/lukas/snap/bin/gpt
xml= /home/lukas/Desktop/automatic/test/resample_s2.xml
properties=/home/lukas/Desktop/automatic/test/resample_20m.properties
output=/home/lukas/Desktop/automatic/outputs/processed.dim
input=/home/lukas/Desktop/automatic/inputs/S2A_MSIL2A_20170717T095031_N0205_R079_T34UCV_20170717T095631.SAFE/MTD_MSIL2A.xml

$gpt $xml -e -p $properties -t $output $input

错误是:

/home/lukas/Desktop/automatic/test/resample_s2.xml: line 1: syntax error near unexpected token `newline'
/home/lukas/Desktop/automatic/test/resample_s2.xml: line 1: `<graph id="Resample_Sentinel-2">'

我执行如下:

bash gpt_test.sh

xml在两种情况下文件是相同的;它在终端中工作正常,但当我尝试从脚本运行它时出现错误。

答案1

这行代码就是罪魁祸首:

xml= /home/lukas/Desktop/automatic/test/resample_s2.xml

您必须删除 后面的空格=。有了空格,它会尝试将分配的正确部分作为单独的命令执行,这解释了为什么它会在 XML 文件中显示有关“意外标记”的错误。

相关内容