Bash 基于slackware的Linux操作系统上的Shell脚本错误

Bash 基于slackware的Linux操作系统上的Shell脚本错误,bash,shell,Bash,Shell,我有一个在Ubuntu上运行的shell脚本,可以根据需要提供输出。当我在slackware linux版本上测试时,我的脚本失败了 脚本在以下位置失败: dialog --title "Test" --gauge "Copying file." 6 100 < <( rsync -a --progress test.tar.gz /media/sda1 | unbuffer -p grep -o "[0-9]*%" | unbuffer -p cut -

我有一个在Ubuntu上运行的shell脚本,可以根据需要提供输出。当我在slackware linux版本上测试时,我的脚本失败了

脚本在以下位置失败:

dialog --title "Test" --gauge "Copying file." 6 100 < <(
    rsync -a --progress test.tar.gz /media/sda1 | 
    unbuffer -p grep -o "[0-9]*%" | 
    unbuffer -p cut -f1 -d '%'  
    )

dialog--title“Test”--gauge“Copying file.”6 100很可能是试图用非bash shell运行bash脚本。或者使用较旧的bash版本

首先,尝试显式地通过bash运行它,即:

bash script.sh
您还应该将shebang指向bash:

#!/bin/bash
[更新如下]


<谢谢你的建议。结果没有成功。实际上,我在同一个系统的其他地方使用了类似的语法,结果很好。奇怪的都是
@chepner是的都是
这两个系统上的bash版本是什么?@chepner:你说得对,谢谢你强迫我查找
信息bash
并亲自查看;)。我从帖子中删除了它,因为这里似乎没有任何东西。这实际上解决了问题,但cat命令似乎可以缓冲所有东西。您是否有将当前输出重定向到对话框的建议?我还尝试了cat-u,unix进程缓冲I/o是正常的。我不熟悉
对话框
。让我查一查……啊哈。。。我明白了。也许你需要一个传统的管道<代码>rsync…|解除缓冲…|对话框…
。我还没试过,我试过了。它每次重置对话框,每次显示0%。正在使用另一种方法,您可以尝试
rsync-a--progress${origin:?}${destination:?}6 100 | nawk'{print$3}'
?我只得到空行和
100%
#!/bin/bash
cat < <(
    ...
    ...
)
cat <<< "$(
    ...
    ...
)"