Whiptail обнаруживает дефис по имени в качестве команды

Я пытаюсь сделать контрольный список с помощью whiptail, но когда я ввожу один из параметров, он обнаруживает его как команду, даже если он находится в кавычках. Точка с этим контрольным списком состоит в том, чтобы выбить файл и добавить переменные в конец команды оболочки во время bash, то есть

bash something.sh -cached_var_here

Вот код и ошибка:

BENCH=$(whiptail --title "Choose Benchmark Options" --checklist "Choose:" 20 30 15 \ "-info" "System Information" off \ "-io" "System I/O Test" off \ "-cdn" "CDN Test Download (200MB)" off \ "-northamerica" "North-American Server Test Download (800MB)" off \ "-europe" "European Server Test Download (900MB)" off \ "-asia" "Asian Server Test Download (400MB)" off \ "-b" "System Information, CDN Download Test & I/O Test" off \ "-speed" "Network Speedtest Using speedtest-cli" off \ "-share" "Share Your Results With Others!" off \ "-help" "Help Menu. Do NOT Execute This With Other Options!" off \ "-about" "Show About-Info. Do NOT Execute This With Other Options!" off \ 3>&1 1>&2 2>&3) echo "You chose the following options: $BENCH" echo echo "Do you want to run CUSTOM benchmark and information? (y/n)? " old_stty_cfg=$(stty -g) stty raw -echo answer=$( while ! head -c 1 | grep -i '[ny]' ;do true ;done ) stty $old_stty_cfg if echo "$answer" | grep -iq "^y" ;then echo Yes; curl -LsO raw.githubusercontent.com/sayem314/serverreviewbenchmark/master/bench.sh; chmod +x bench.sh echo ./bench.sh $BENCH

Я получаю эту ошибку:

You chose the following options: -info: unknown option
0
задан 9 January 2018 в 21:19

3 ответа

Давайте рассмотрим man whiptail:

whiptail интерпретирует аргументы, начинающиеся с тире «-» как аргументы. Чтобы избежать этого и начать какой-либо текст, например, элемент menubox с тире, whiptail почитает соглашение getopt о принятии специального аргумента «--», что означает, что все следующие аргументы с тире обрабатываться дословно и не анализироваться как варианты.

Следовательно, следующий подход должен работать как прелесть:

whiptail --title "Choose Benchmark Options" --checklist -- Choose: 20 30 15 -info "System Information" off
4
ответ дан 17 July 2018 в 23:30

Давайте рассмотрим man whiptail:

whiptail интерпретирует аргументы, начинающиеся с тире «-» как аргументы. Чтобы избежать этого и начать какой-либо текст, например, элемент menubox с тире, whiptail почитает соглашение getopt о принятии специального аргумента «--», что означает, что все следующие аргументы с тире обрабатываться дословно и не анализироваться как варианты.

Следовательно, следующий подход должен работать как прелесть:

whiptail --title "Choose Benchmark Options" --checklist -- Choose: 20 30 15 -info "System Information" off
4
ответ дан 24 July 2018 в 14:00

Давайте рассмотрим man whiptail:

whiptail интерпретирует аргументы, начинающиеся с тире «-» как аргументы. Чтобы избежать этого и начать какой-либо текст, например, элемент menubox с тире, whiptail почитает соглашение getopt о принятии специального аргумента «--», что означает, что все следующие аргументы с тире обрабатываться дословно и не анализироваться как варианты.

Следовательно, следующий подход должен работать как прелесть:

whiptail --title "Choose Benchmark Options" --checklist -- Choose: 20 30 15 -info "System Information" off
4
ответ дан 24 July 2018 в 17:03

Другие вопросы по тегам:

Похожие вопросы: