我正在尝试将此处的字符串传递给期望以交互方式传递三个值的命令。看起来它应该很简单,但由于某种原因,程序似乎只正确接收了 here 字符串的第一行,而忽略了第一个 \n 之后的所有内容。
这是我正在尝试的:
command <<< $'firstValue\nsecondValue\nthirdValue\n'
如果有人能告诉我我错过了什么,我将不胜感激。我不确定它是否相关,但第二个值包含一个空格。我在 Mac 上运行它。
我正在尝试将此处的字符串传递给期望以交互方式传递三个值的命令。看起来它应该很简单,但由于某种原因,程序似乎只正确接收了 here 字符串的第一行,而忽略了第一个 \n 之后的所有内容。
这是我正在尝试的:
command <<< $'firstValue\nsecondValue\nthirdValue\n'
如果有人能告诉我我错过了什么,我将不胜感激。我不确定它是否相关,但第二个值包含一个空格。我在 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
问题。
事实证明,我传递 here 字符串的命令无法足够快地处理来自 here 字符串的输入。我最终使用了以下解决方法:
(printf 'value1\n'; sleep 2; printf 'value2\n'; sleep 2; printf 'value3\n') | command