LINUX.ORG.RU
решено ФорумAdmin

Как правильно экранировать имя файла для дальнейшей работы с ним в скрипте?

 , ,


0

1

Всем привет! Знатоки, подскажите, пожалуйста, по сабжу. Вот есть например имя файла: s 2 (эс пробел два).

Я хочу например этот файл обработать в sed, а потом сохранить результат под другим именем.

Cкрипт запускаю так:

./myscript s\ 2

Команда sed в скрипте, например:

#!/bin/bash

NAME=$(printf '%q' "$1")
sed 's/.*/\U&/' $NAME
Выдаёт такую ошибку:
sed: can't read s\: No such file or directory
sed: can't read 2: No such file or directory

Команда вывода в файл:

#!/bin/bash

NAME=$(printf '%q' "$1")
echo 123 > $NAME
Выдаёт такую ошибку:
./myscript: line 4: $NAME: ambiguous redirect

Не понимаю, как правильно экранировать, чтобы команды понимали имя файла (которое, кстати, может содержать как проблему не только пробелы, но и любые другие символы).

Пробовал и такой вариант:

NAME="$(echo $1 | sed 's/[^[:alnum:]]/\\&/g')"
Реакция идентичная.

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.