我有一个可执行文件,使用方式如下:
executable -v -i inputFile.txt -o outputFile.eps
Run Code Online (Sandbox Code Playgroud)
为了提高效率,我想使用Bash变量代替输入文件.所以,我想做类似以下的事情:
executable -v -i ["${inputData}"] -o outputFile.eps
Run Code Online (Sandbox Code Playgroud)
方括号代表一些聪明的代码.
你知道一些技巧可以让我以这种方式将信息传递到所描述的可执行文件中吗?
非常感谢你的协助
mik*_*yra 30
您可以使用该构造
<(command)
Run Code Online (Sandbox Code Playgroud)
让bash为你创建一个带有命令输出的fifo.所以试试吧:
-i <(echo "$inputData")
Run Code Online (Sandbox Code Playgroud)
要正确处理病理情况下像inputdata='\ntest'
或者inputdata='-e'
,你需要
executable -v -i <(cat <<< "$inputData")
Run Code Online (Sandbox Code Playgroud)
在zsh
,cat
没有必要
编辑:即使这会添加一个尾随换行符.要逐字节输出确切的变量内容,您需要
executable -v -i <(printf "%s" "$inputData")
Run Code Online (Sandbox Code Playgroud)