Сценарий Ksh: Запустите замену символа в стиле bash: ${@/.txt/}

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

В Баше я бы сделал

NewVar=${@/.txt/}

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

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

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

Спасибо,

Дэн


person Dan    schedule 27.05.2009    source источник


Ответы (2)


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

person toolkit    schedule 27.05.2009

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

tmp=$@
newvar=${tmp%.txt}
person Charlie    schedule 12.07.2010