提问人:Occam's Chainsaw 提问时间:3/22/2023 最后编辑:Occam's Chainsaw 更新时间:3/22/2023 访问量:49
BASH:通过管道传递到对话框的函数中的变量丢失
BASH: Variables in a function piped to dialog are lost
问:
我有一个带有函数的脚本,该函数可以做一些事情并设置一些变量以供稍后在脚本中使用。此函数还回显进度(回声 10、回声 20 等),并通过管道传输到“对话框 --gauge”以显示进度条。函数完成并对话框退出后,函数中设置的所有变量都将丢失。
为简化起见,逻辑如下:
myScript.sh:
#!/bin/bash
myFunction() {
_var1=1
_var2=2
_var3=3
#Do stuff..
echo 0
sleep 1
echo 25
sleep 1
echo 50
sleep 1
echo 75
sleep 1
echo 100
sleep 1
}
myFunction | dialog --backtitle "Backtitle" --title "Title" --gauge "\\nWait while stuff is being done...\\n\\nProgress:" 10 60
# Or
# dialog --backtitle "Backtitle" --title "Title" --gauge "\\nWait while stuff is being done...\\n\\nProgress:" 10 60 < <(myFunction)
echo -e "Var 1: $_var1" # Is empty
echo -e "Var 2: $_var2" # Is empty
echo -e "Var 3: $_var3" # Is empty
exit 0;
关于如何在不丢失变量的情况下实现这一点的任何想法?
谢谢!
./myScript.sh
Var 1:
Var 2:
Var 3:
编辑:多亏了@chepner,第一条评论中提出的解决方案奏效了:myFunction > >(dialog --backtitle "Backtitle" --title "Title" --gauge "\\nWait while stuff is being done...\\n\\nProgress:" 10 60)
答: 暂无答案
上一个:如何列出所有 linux 别名
下一个:检查子进程是否被用户终止
评论
myFunction
dialog
myFunction > >(dialog ...)
myFunction
dialog