将文件的内容重定向为shell命令的输入

问题描述 投票:0回答:1

我正在尝试将文件的内容传递给bash命令,但出现以下错误。这是代码段:

for QM in QM/* do sudo -u mqm runmqsc "$(basename -s .txt "$QM")" < cat $(basename $QM) done

+ sudo -u mqm runmqsc MSGSVCDC MSGSVCDC.txt/ var / lib / cloud / instance / scripts / part-001:第51行:cat:无此类文件或目录

有人可以让我知道如何解决它。

bash shell io-redirection
1个回答
1
投票

[使用结构< cat $(basename $QM),您曾幻想过发明UUOC的变体。但是将文件内容传递给bash命令作为标准输入,重定向只是<$QM,因为在此应用basename是错误的。如果在某些情况下确实需要通过basename之类的命令对文件名进行预处理,则最可移植的语法(较早的Shell也可以理解)为<`basename $QM`。在Bash中,当然<$(basename $QM)也可以。

© www.soinside.com 2019 - 2024. All rights reserved.