命令只获取多行第一行的字符串

时间:2017-04-28 13:51:51

标签: bash macos herestring

我正在尝试将here字符串传递给一个命令,该命令需要以交互方式传递三个值。它看起来应该很简单,但由于某种原因,程序似乎只是正确地接收了这里字符串的第一行而忽略了第一行后的所有内容。

以下是我正在尝试的内容:

command <<< $'firstValue\nsecondValue\nthirdValue\n'

如果有人能告诉我我错过了什么,我会非常感激。我不确定它是否相关,但第二个值包含空格。我在Mac上运行它。

2 个答案:

答案 0 :(得分:0)

我可能会建议您为这里的参数设置一段时间阅读:

#!/bin/bash

read -r -d '' vals <<EOT
first value
second value
third value
EOT

command <<< "$vals"

如果你想每次在每个参数上运行命令:

while read -r src; do command "$src" ; done<<<"$vals" 

由于您需要一次运行一个参数,因此可能更容易管理,然后您无需担心换行\n问题。

答案 1 :(得分:0)

事实证明,我传递here字符串的命令无法从here字符串中足够快地处理输入。我最终使用了以下解决方法:

(printf 'value1\n'; sleep 2; printf 'value2\n'; sleep 2; printf 'value3\n') | command