Я пишу Баш скрипт, который содержал команду, аналогичную:шаблон соответствия в строке
echo Configure with --with-foo=\"/tmp/foo-*\"
Я хотел эту команду для получения вывода, такие как:
Configure with --with-foo="/tmp/foo-1.3.2"
но модель WASN» t расширен, потому что он был встроен в строку. Я получил его на работу, используя подстановку команды:
echo Configure with --with-foo=\"$(echo /tmp/foo-*)\"
Я думаю, что это стандартное/бен/ш решение, но Баш поддерживает решение, которое не требует раздваивание подоболочку, таким же образом, что $((6 * 7))
можно использовать вместо $(expr 6 \* 7)
? Кроме того, есть ли способ ограничить результат одним совпадением?
Пожалуй 'printf 'Настроить с помощью -foo = \"% s \ "\ n"/tmp/foo- * '? Хотя вся идея кажется немного хрупкой, потому что '/ tmp/foo- *' может не совпадать ни с чем, или более чем с одной, что может привести к нечетным проблемам ... – twalberg
@twalberg Должно быть ровно одно совпадение, если все хорошо , поэтому я бы действительно хотел создать ошибку, если ее нет. –
Да, это «если все не хорошо», о чем я говорил, поэтому вам может понадобиться некоторая логика перед 'printf', чтобы убедиться, что все действительно ... – twalberg