bash脚本没有获取管道数据

RBI*_*RBI 1 bash pipe

我正在尝试编写一个bash脚本来操作从xsel传输的数据.

...
ary=()
while read data; do
    echo $data
    ary=( "${ary[@]}" "$data" )
done
Run Code Online (Sandbox Code Playgroud)

问题是我打电话时没有看到任何东西:

xsel | myscript.sh
Run Code Online (Sandbox Code Playgroud)

我试过了

echo "testing testing" | myscript.sh
Run Code Online (Sandbox Code Playgroud)

这确实有效,而且我也确保有来自xsel的东西

xsel | festival --tts --pipe
# will read the clipboard string piped from xsel aloud
Run Code Online (Sandbox Code Playgroud)

有什么建议?提前致谢

tha*_*guy 6

read如果它无法读取整行,则会失败,并且xsel不会输出换行符.

用以下代替你的循环:

readarray ary   # new in Bash 4
Run Code Online (Sandbox Code Playgroud)

如果您只是将数组中的行添加为代理以将所有数据粘贴到变量中,则可以执行以下操作:

input=$(cat)
Run Code Online (Sandbox Code Playgroud)