Передать параметры командной строки программе внутри сценария оболочки

Это делает не то, что вы думаете. $1 является первым параметром, который вы передаете скрипту, но на самом деле вы не передаете никакого параметра. Это означает, что cat $file на самом деле становится cat. Если не передавать никаких аргументов, cat просто выведет свой вход:

$ echo "foo" | cat
foo

Итак, первый cat выводит входные данные, содержимое файла. У второго нет входных данных, поскольку все они были получены первым, поэтому он ничего не делает. Вы хотите сделать что-то вроде:

myscript.sh file

Это распечатает содержимое файла дважды, а также сохранит вывод cat $file |wc в переменной n.


Если вы хотите сохранить содержимое файла в $file, попробуйте:

file="$(cat < "$1")"

И запустите скрипт с именем файла в качестве аргумента:

script.sh file
15
22.08.2016, 02:57
0 ответов

Теги

Похожие вопросы