#linux #bash
#linux #баш
Вопрос:
Когда я запускаю свой скрипт локально, я могу идеально очистить строки и удалить косые черты:
get_branch_name () {
local branch_name="$(git name-rev --name-only HEAD)"
echo $branch_name
}
feature_branch_name="$(get_branch_name)"
feature_branch_name_no_backslash=$(echo $feature_branch_name | sed 's///-/')
Однако на моем удаленном сервере Linux sed
это не работает, и до сих пор я вообще не смог заставить это работать, используя любую комбинацию решений, которые я нахожу в Интернете.
Я хочу заменить косые черты тире, так как они используются в качестве имени файла, а косые черты будут создавать вложенные папки.
Как я могу добиться этого с помощью substitution или sed? Спасибо.
Комментарии:
1. Когда вы говорите «sed не работает»: он не установлен или показывает какую-то ошибку?
2. Спасибо — это не имеет никакого эффекта, в отличие от того, когда я запускаю его локально в своем терминале — ошибки нет
3. Если вы измените с
/
на[/]
, это решит проблему? (Будет ли это зависеть от того, как вы передаете команду на удаленную машину, которую вы нам не показали; но обратные косые черты, как правило, хрупкие — их легко использовать, поэтому они не лучший выбор среди форм экранирования).
Ответ №1:
Используйте расширение параметра с помощью from/to:
feature_branch_name_no_backslash=${feature_branch_name////-}
Комментарии:
1. Спасибо, однако это заменяет только первую косую черту. Может ли он заменить каждую косую черту?
2. Я внес изменения в ответ