Очистка строки для удаления косых черт в скрипте Bash

#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. Я внес изменения в ответ