Имя пути сборки с переменной в качестве входных данных для касания [дубликат]

Dado un grupo repetido como (...){n,m}o (...)+, no creo que haya forma de que Vim extraiga cada ocurrencia del grupo. Solo el último está disponible en todas las funciones y comandos relacionados con expresiones regulares -.

Dicho esto, puede usar una sustitución anidada:

:s/\v%([a-zA-Z]\s){3,}[a-zA-Z]/\=substitute(submatch(0), '\s', '', 'g')/gc

Un \=en el reemplazo de :shace que Vim evalúe el reemplazo como una expresión. Y en esa expresión, estoy usando la funciónsubstitute()para eliminar todos los espacios en todo el texto coincidente de:s(obtenido por submatch(0)), dando Lighde L i g h.

0
23.05.2019, 19:21
2 ответа

Очевидно, я мгновенно понял ответ.

$ newFile="${mypath}newFile.sh"
touch newFile

не работает

$ newFile=${mypath}newFile.sh
touch newFile

работает

0
28.01.2020, 02:40

Это не работает так, как вы ожидаете, из-за порядка раскрытия.

Из руководства по bash:

The order of expansions is: brace expansion; tilde expansion, parameter and variable expansion, arithmetic expansion, and command substitution (done in a left-to-right fashion); word splitting; and pathname expansion.

В вашей первой строке ~будет расширено, если используется без кавычек. Как бы то ни было, ~внутри кавычек не раскрывается и не раскрывается позже, потому что раскрытие тильды выполняется до раскрытия переменной.

Вы пишете, что это работает, но тот факт, что вывод echoравен ~/local/bin/newFile.sh, показывает, что это не работает.

Если вам нужны кавычки, потому что значение содержит пробелы, вы можете поставить в кавычки часть после~/:

mypath=~/"local/bin with spaces/"
newFile="${mypath}newFile.sh"
echo "$newFile"
1
28.01.2020, 02:40

Теги

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