我可以在Linux命令行中运行以下命令,它正确地列出所有具有ABC-和XYZ-前缀的文件:Linux bash:如何正确使用eval命令?
ls {ABC-,XYZ-}*.xml
Result: ABC-01.xml ABC-02.xml ABC-03.xml XYZ-01.xml XYZ-02.xml
现在,我计算过,我如下可以使用一个变量:
file_pfx={ABC-,XYZ-}
,然后使用该变量在 “LS” 命令 “EVAL” 组合:
eval 'ls ${file_pfx}*.xml'
Result: ls: {ABC-,XYZ-}*.xml: No such file or directory
我在做什么错?
感谢
您不能支撑expressioni存储在一个变量*。请参阅[手册中的扩展顺序](https://www.gnu.org/software/bash/manual/bashref.html#Shell-Expansions)。 –
在实际使用'eval'之前,请参阅[“为什么应该在Bash中避免使用eval,我应该使用什么?”](https://stackoverflow.com/questions/17529220/why-should-eval-be-avoided而不是我应该使用的) – John1024
感谢您提供完整的测试用例和输出! +1 –