我有一个在方式使用,如下面的可执行文件:
executable -v -i inputFile.txt -o outputFile.eps
为了更有效率,我希望在的地方输入文件的使用猛砸变量。 所以,我想要做的东西像下面这样:
executable -v -i ["${inputData}"] -o outputFile.eps
在这里,方括号表示一些聪明的代码。
你知道一些窍门,让我来管信息将在此方式所描述的可执行文件?
非常感谢你的协助
我有一个在方式使用,如下面的可执行文件:
executable -v -i inputFile.txt -o outputFile.eps
为了更有效率,我希望在的地方输入文件的使用猛砸变量。 所以,我想要做的东西像下面这样:
executable -v -i ["${inputData}"] -o outputFile.eps
在这里,方括号表示一些聪明的代码。
你知道一些窍门,让我来管信息将在此方式所描述的可执行文件?
非常感谢你的协助
您可以使用结构
<(command)
有bash的创建命令的输出为您FIFO。 所以,只是尝试:
-i <(echo "$inputData")
回声是不是安全使用任意输入 。
要正确处理病理情况下,像inputdata='\ntest'
或inputdata='-e'
,你需要
executable -v -i <(cat <<< "$inputData")
在zsh
,该cat
是没有必要的
编辑:即使这增加了一个结尾的新行。 要输出精确的变量内容逐字节,你需要
executable -v -i <(printf "%s" "$inputData")
注意:只有zsh中:
要获得包含内容的文件名${variable}
,使用:
<(<<<${variable})
注意:
<<<${variable}
重定向STDIN
来自${variable}
<<<${variable}
等同于(但速度比) cat <<<${variable}
所以对于OP的情况:
executable -v -i <(<<<${inputData}) -o outputFile.eps
假设您的可执行文件的名称是exec和定义的变量名是x,你想传递x的值作为输入的可执行文件。 然后这样做:
$ echo $x > stdin && ./exec < stdin
这将做的工作
executable -v -i <<<"${inputData}" -o outputFile.eps
会做的伎俩在bash。