Скрипт Ksh: Запустите замену похожих на bash символов: $ average@/.txt/} - PullRequest
0 голосов
/ 27 мая 2009

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

В bash я бы сделал

NewVar=${@/.txt/}

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

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

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

Спасибо

Dan

Ответы [ 2 ]

4 голосов
/ 27 мая 2009

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

0 голосов
/ 12 июля 2010

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

tmp=$@
newvar=${tmp%.txt}
...