2017-02-16 43 views
0

Я пытаюсь передать функцию двух переменных, я хотел бы заменить пробелы подчеркивания для имени файла, то есть:Bad substittion в KSH

directory=<path to file> 
file=<name of file> 

my_function "$directory/${file// /_}" 

Это будет работать в Баш и позже КШ, однако я я работаю над более старым ядром Solaris 9, а результат - плохая ошибка замещения.

Есть ли чистый способ достичь этой функциональности в старой среде KSH?

+0

'$ {реж}/$ (эхо "$ файл" | SED 's/_// г') ....'. Удачи. – shellter

+0

Спасибо! Хотя я заменяю пробелы символами подчеркивания so// _/g '. – HerpNDerp

+0

Решение 'tr' может быть микроскопически более эффективным (я проголосовал за него). Если вы собираетесь использовать 'sed', я бы рекомендовал' printf '... "| sed '...' 'как в' tr' решении. Всем удачи. – shellter

ответ

2

Вы можете использовать tr:

my_function "$directory/$(printf '%s' "$file" | tr ' ' '_')"