存在一个命令foo
,该命令需要两个参数,这两个参数是文件名并在stdout上打印一些内容。如何将变量作为临时文件传递给bash中的命令
我有两个变量a
和b
持有两个字符串的Bash脚本。
我希望传递给foo
两个文件名,其中这些文件的内容是a
和b
。然后,我想将stdout存储为一个新变量c
。
继特设谷歌搜索,脚本将可能看起来像:
a=...;
b=...;
c=`foo <($a) <($b)`;
什么应该样子呢?
存在一个命令foo
,该命令需要两个参数,这两个参数是文件名并在stdout上打印一些内容。如何将变量作为临时文件传递给bash中的命令
我有两个变量a
和b
持有两个字符串的Bash脚本。
我希望传递给foo
两个文件名,其中这些文件的内容是a
和b
。然后,我想将stdout存储为一个新变量c
。
继特设谷歌搜索,脚本将可能看起来像:
a=...;
b=...;
c=`foo <($a) <($b)`;
什么应该样子呢?
a=...
b=...
c=$(foo <(echo "$a") <(echo "$b"))
echo "$c"
不幸的是,这不起作用,其中'$ a'或'$ b'中有换行符。 – jameshfisher 2014-09-20 20:53:46
如果你打印出来,请确保你引用'“$ c”'。 'echo“$ c”'不''echo $ c'。 – 2014-09-20 20:58:53
对不起,我不能评论,所以只是重写约翰的答案。 尝试使用echo -e
a=...
b=...
c=$(foo <(echo -e "$a") <(echo -e "$b"))
echo -e "$c"
根据如何'了'和'B'都在第一时间设置,可以更换'<($ A)'和'<(CMD-是集-A)'并完全跳过这些变量。 – chepner 2014-09-21 16:44:11