Передача имени файла в скрипт в качестве аргумента. Данный файл или каталог отсутствует - PullRequest
0 голосов
/ 13 октября 2011

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

Однако все команды работают при вводе в оболочку;в сценарии, когда я пытаюсь передать имя файла в качестве аргумента, я получаю сообщение об ошибке «Нет такого файла или каталога».

Вот функция, о которой идет речь:: извините я забыл упомянуть, скрипт делает пару вещей.$ 1 - это опция, $ 2 - это файл.Я называю это так:

./script.sh m filename

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Попробуйте:

${2? 2 arguments are required to function belowFifty}
numbers=$( cut -d : -f 3 < $2 )

Я подозреваю, что проблема в том, что вы вызываете функцию, а не указываете второй аргумент.Внутри функции $ 2 - это аргумент, передаваемый функции, а не аргумент, передаваемый основному сценарию.

0 голосов
/ 13 октября 2011

Вы указываете "$2"; что в "$1", которое передается в функцию и игнорируется? Я сильно подозреваю, что вы пытаетесь открыть файл с пустой строкой в ​​качестве имени, и такого файла нет - отсюда и сообщение об ошибке. Следствие состоит в том, что вы, вероятно, намеревались ссылаться на "$1". Если это так, вы, вероятно, должны написать:

numbers=$(cut -d : -f 3 < "$1")

Следует избегать обозначений обратного тика в пользу $(...).

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