2016-06-03 3 views
1

Эта простая программа должна читать строки файлов, но вместо этого выводит «кошку» каждый раз. В чем проблема?Файл чтения сценариев оболочки Bourne

#!/bin/sh 
while read line 
do 
    echo $line 
done <file 

Edit:

file должен быть файл пользователи вводят при вызове программы из терминала. Как:

./programname file 
+2

Что вы означает, что "выходы кошка"? Как он печатает слово «кошка» или он просто показывает все залоги? –

+0

@kamillaKan Что такое содержимое 'file'? Обновите вопрос с тем же – sjsam

+0

@ Zephyr Pellerin он просто печатает слово cat – hackgamn

ответ

3

это, предполагают, чтобы быть файл пользователей ввода при вызове программы из терминала. Как: ./programname файл

В этом случае вы должны делать

#!/bin/sh 
if [ -f "$1" ] # checking if file exist 
then 
while read line 
do 
    echo "$line" 
done <"$1" # double quotes important to prevent word splitting 
else 
    echo "Sorry file $1 doesn't exist" 
fi 

Здесь $1 представляет первый параметр, который вы передаете в сценарий.

Интересно гласит:

  1. Что такое [ word splitting ]?
  2. Shell скрипт [ parameters ]
+0

Зачем здесь downvote? – sjsam

+0

Ваш код работает отлично для меня и кажется как можно ближе к ответу, поскольку OP собирается получить, если он не предоставит больше информации. Итак: +1. – John1024

+0

@ John1024: Спасибо, приятель. Меня больше беспокоит нисходящая точка. Если ни один из спутников не предоставит мне некоторую информацию, они лишают меня большой возможности для обучения. Я принимаю это в Международный Суд, то есть мета;) – sjsam

Смежные вопросы