bash脚本没有获取管道数据

时间:2014-05-30 23:28:14

标签: bash pipe

我试图编写一个bash脚本来处理从xsel传输的数据。

...
ary=()
while read data; do
    echo $data
    ary=( "${ary[@]}" "$data" )
done

问题是我打电话时没有看到任何内容:

xsel | myscript.sh

我试过了

echo "testing testing" | myscript.sh

这是有效的,我也确保有来自xsel的东西

xsel | festival --tts --pipe
# will read the clipboard string piped from xsel aloud

有什么建议吗?提前致谢

1 个答案:

答案 0 :(得分:6)

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

用以下代码替换你的循环:

readarray ary   # new in Bash 4

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

input=$(cat)