LINUX.ORG.RU

Экранирование пробелов в sh-скрипте


0

0

Имеем простой скрипт:

#!/bin/sh

for par in $@;
do
cat $par;
done;

Запускаем его, например, вот так:

./tmp_script *.txt

Если в текущей директории нет файлов с пробелами в именах, всё работает на ура. Как только появляется имя с пробелом -- "error: не могу найти файл". Нужно как-то экранировать пробелы во входных параметрах, но КАК???

anonymous

Ответ на: комментарий от Selecter

не помоему сам $par уже без пробелов. Я так понимаю на этапе for и неправильно выбирается имя файла. Поправте если ошибаюсь.

fura13 ★★★
()
Ответ на: комментарий от fura13

Ага, не, таже хрень будет параметры уже передались "нетак" то есть ./prog file name.txt : file это первый а name.txt это другой. угу тоды вопрос как :) ?

fura13 ★★★
()
Ответ на: комментарий от kosmonavt

гыыы это проще чем : 

#!/bin/sh

buf=""

for i in $@
do
    if [ -z $buf ]; then
        if ls $i 1>/dev/null 2> /dev/null ; then
            cat $i;
        else
            buf=$i;
        fi
    else
        cat "$buf $i";
        buf="";
    fi
done

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