将文件内容重定向为 shell 命令的输入
Redirect content of the file as input to shell command
我试图将文件的内容传递给 bash 命令,但我得到以下 error.Here 是代码片段:
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:没有那个文件或目录
谁能告诉我如何解决它。
您使用构造 < cat $(basename $QM)
进行了一种奇特的尝试,试图发明 UUOC 的变体。但是将文件的内容作为标准输入传递给bash命令,重定向只是<$QM
,因为应用basename
是错误的这里。如果在某些情况下你真的需要通过像 basename
这样的命令预处理文件名,最可移植的语法(也被旧的 shell 理解)是 <`basename $QM`
。在 Bash 当然 <$(basename $QM)
也可以。
我试图将文件的内容传递给 bash 命令,但我得到以下 error.Here 是代码片段:
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:没有那个文件或目录
谁能告诉我如何解决它。
您使用构造 < cat $(basename $QM)
进行了一种奇特的尝试,试图发明 UUOC 的变体。但是将文件的内容作为标准输入传递给bash命令,重定向只是<$QM
,因为应用basename
是错误的这里。如果在某些情况下你真的需要通过像 basename
这样的命令预处理文件名,最可移植的语法(也被旧的 shell 理解)是 <`basename $QM`
。在 Bash 当然 <$(basename $QM)
也可以。