Я хочу назвать dialog
а-ля:Как разрешить пустые аргументы в командных подстановках?
dialog --menu Choose: 0 40 10 A '' B '' C ''
кроме A
, B
и C
являются результатом динамического запроса, ради этого вопроса последний будучи { echo A; echo B; echo C; }
.
я могу получить нужную командную строку, казалось бы, с помощью:
{ echo A; echo B; echo C; } | sed -e "s/\$/ ''/;"
но:
echo $({ echo A; echo B; echo C; } | sed -e "s/\$/ ''/;")
и его выход:
A '' B '' C ''
показать, что результат подстановки команд только word-split, но ''
не интерпретируется как пустой аргумент, но передается до echo
(и, таким образом, dialog
не будет отображать описания для пунктов меню, но буквально ''
s).
Я могу обойти это в bash с помощью массивов, но есть ли более простое решение, которое мне не хватает?
Учитывая
$ e() { printf "tag: [$1] item: [$2]"; }
$ e $(echo "A ''")
$ tag: [A] item: ['']
Как я могу изменить $(...)
часть, таким образом, что элемент []
вместо ['']
.
Что реально проблема, которую вы пытаетесь решить? –
@AnsgarWiechers Учитывая '{echo A; эхо B; echo C; } ', Я хочу выполнить' dialog - menu Выберите: 0 40 10 A '' B '' C '' '. –
* Почему вы хотите запустить это? Чего вы хотите добиться, выполняя это? –