Кш скрипт:Запустите замену символов в стиле bash:${@/.txt/}

StackOverflow https://stackoverflow.com/questions/917307

  •  06-09-2019
  •  | 
  •  

Вопрос

У меня есть сценарий ksh, который должен оставаться таковым (некоторые программы, которые он запускает, настаивают на том, чтобы быть ksh).Я хочу взять входной аргумент «test.txt» и удалить последние 4 символа или найти и заменить «.txt» ничем.

В bash я бы сделал

NewVar=${@/.txt/}

Однако в ksh это не работает.Как мне избавиться от .txt в ksh?Я пытался

bash -c 'NewVar=${@/.txt/}'

но переменная $@ не работала в этой вновь созданной оболочке.

Спасибо,

Дэн

Это было полезно?

Решение

Почему бы не использовать базовое имя?

Другие советы

ksh не позволит вам сделать это с помощью $@, но если вы присвоите его временной переменной, вы можете сделать это, не создавая другой процесс с помощью

tmp=$@
newvar=${tmp%.txt}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top