我从文件运行一个命令时遇到问题。
当我直接在终端中执行命令时,一切正常,软件运行良好。如果我尝试从文件运行它,则一个文件始终会出错。
如果我使用此命令和完整路径直接在终端中运行它,它就可以正常工作:
/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 文件中显示有关“意外标记”的错误。