Кш скрипт:Запустите замену символов в стиле bash:${@/.txt/}
Вопрос
У меня есть сценарий ksh, который должен оставаться таковым (некоторые программы, которые он запускает, настаивают на том, чтобы быть ksh).Я хочу взять входной аргумент «test.txt» и удалить последние 4 символа или найти и заменить «.txt» ничем.
В bash я бы сделал
NewVar=${@/.txt/}
Однако в ksh это не работает.Как мне избавиться от .txt в ksh?Я пытался
bash -c 'NewVar=${@/.txt/}'
но переменная $@ не работала в этой вновь созданной оболочке.
Спасибо,
Дэн
Решение
Почему бы не использовать базовое имя?
Другие советы
ksh не позволит вам сделать это с помощью $@, но если вы присвоите его временной переменной, вы можете сделать это, не создавая другой процесс с помощью
tmp=$@
newvar=${tmp%.txt}
Не связан с StackOverflow