命令仅在此处获取多行字符串的第一行
Command only getting first line of multiline here string
我正在尝试将此处的字符串传递给一个命令,该命令期望以交互方式传递三个值。看起来应该很简单,但由于某种原因,该程序似乎只正确接收此处字符串的第一行并忽略第一个 \n.
之后的所有内容
这是我正在尝试的:
command <<< $'firstValue\nsecondValue\nthirdValue\n'
如果有人能告诉我我遗漏了什么,我将不胜感激。我不确定它是否相关,但第二个值包含 space。我是 运行 这个 Mac。
我可能会建议您花点时间阅读这里的论点:
#!/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
问题。
事实证明,我将此处字符串传递给的命令无法足够快地处理来自此处字符串的输入。我最终使用了以下解决方法:
(printf 'value1\n'; sleep 2; printf 'value2\n'; sleep 2; printf 'value3\n') | command
我正在尝试将此处的字符串传递给一个命令,该命令期望以交互方式传递三个值。看起来应该很简单,但由于某种原因,该程序似乎只正确接收此处字符串的第一行并忽略第一个 \n.
之后的所有内容这是我正在尝试的:
command <<< $'firstValue\nsecondValue\nthirdValue\n'
如果有人能告诉我我遗漏了什么,我将不胜感激。我不确定它是否相关,但第二个值包含 space。我是 运行 这个 Mac。
我可能会建议您花点时间阅读这里的论点:
#!/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
问题。
事实证明,我将此处字符串传递给的命令无法足够快地处理来自此处字符串的输入。我最终使用了以下解决方法:
(printf 'value1\n'; sleep 2; printf 'value2\n'; sleep 2; printf 'value3\n') | command