mysqlにToDoリストがあります。もっとインタラクティブにするために使用したいと思います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とブラウザを使うべきですか?