Подсчет строк в оболочке и в скрипте дает разные результаты - PullRequest
2 голосов
/ 29 июля 2011

Для набора файлов в каталоге я хочу получить количество строк для каждого, сохранить его в переменной и выполнить дополнительные действия.С помощью оболочки я могу сделать это без проблем, если я сделаю

read NLINES <<<  $( cat file  |  wc  -l )

, но если я сделаю это в сценарии

#!/bin/bash
for i in `ls *.dat `
do
    read NLINES <<<  $( cat $i  |  wc  -l )
done

Я получу

Syntax error: redirection unexpected

разница?Как я мог это исправить?

1 Ответ

3 голосов
/ 29 июля 2011

Бьюсь об заклад, ваша оболочка по умолчанию не bash, а что-то еще.Оставьте #!/bin/bash и замените его на #!/bin/sh, чтобы позволить вашему сценарию использовать оболочку по умолчанию.

Я сделал эту ошибку другим способом, когда попытался использовать некоторые сценарии debian в Ubuntu, где #!/bin/sh вел себя не так, как предполагалось #!/bin/bash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...