我在 mysql 中有一个待办事项列表。我想使用 使其更具交互性dialog
。
#!/bin/bash
mapfile -t todo < <(mysql -uroot -hmy_host -p$my_pass -Dmy_db -BNe "select task from todo where complete=0;")
list=$(printf "'%s' off " "${todo[@]}")
如果echo "$list"
我得到想要的结果:
'test' off 'test two' off 'another test job' off
如果我手动插入它,它会按预期工作。
但是当我从变量运行对话框时,空格会'test two'
抛出'another test job'
我的参数,我得到:
dialog --clear --no-items --checklist "todo list" 20 65 15 $(echo "$list")
Expected 2 arguments, found extra 1.
如何从 bash 脚本获取正确填充对话框复选框的值?
我也尝试过这个答案中的代码: https://stackoverflow.com/questions/37631873/how-to-generate-interactive-dialog-checklist-from-command-output
像这样:
mapfile -t todo < <(mysql -uroot -hmy_host -p$my_pass -Dmy_db -BNe "select task from todo where complete=0;")
list=$(printf "'%s' off " "${todo[@]}")
cmd=$(dialog --stdout --no-items --separate-output --checklist "todo list" 20 65 15)
checklist=$("${cmd[@]}" "${list}")
但我收到这个错误。而且我不知道这意味着什么:
Expected at least 20 tokens for --chec, have 4.
Use --help to list options.
./test.sh: line 13: : command not found #this is from checklist=$("${cmd[@]}" "${list}")
我本以为 mysql 到对话将是一项非常常见的任务,但我还没有找到关于该主题的任何问题或答案。我应该放弃并使用php和浏览器吗?