스크립트 입력 파일 이름 또는 표준 입력

스크립트 입력 파일 이름 또는 표준 입력
#!/bin/sh


read vstup

if [ -f "$vstup" ]
    then
    cat $vstup
else if [ $vstup = "-"]
        then
         while [ $stadvstup != "q"]
            do
            read $stadvstup >> temp.txt
            done
        cat temp.txt
        rm temp.txt
fi
fi

사용자가 파일 이름이나 표준 입력을 입력할 수 있는 스크립트를 만들고 싶습니다. 사용자가 파일명을 입력하면 파일 내용이 출력됩니다. "-"를 입력하면 사용자가 입력한 후 출력할 수 있습니다. 다음 코드를 사용했습니다. 누군가 나에게 힌트를 줄 수 있습니까? 문제가 있습니까?

답변1

이런 일을해야합니다.

#!/bin/sh

file="temp.txt"
read -r vstup

if [ -f "$vstup" ]
then
     cat "$vstup"
elif [ "$vstup" = "-" ]
then
     while read line
     do
         # break if the line is empty
         [ -z "$line" ] && break
              echo "$line" >> "$file"
     done
   cat $file
   rm $file
fi

답변2

#!/bin/sh

read vstup

if [ -z "$vstup" ] ; then
    :
elif [ "$vstup" = "-" ] ; then
    vstup=''
elif [ ! -f "$vstup" ] ; then
    printf "%s is not a regular file\n" "$vstup"
    exit 1
fi

cat $vstup

cat$vstup파일 이름이 지정되지 않은 경우(즉, 비어 있는 경우) 기본적으로 stdin이 stdout에 복사됩니다. 사용자가 EOF 문자( Ctrl- D) 를 입력할 때까지 이 작업을 계속합니다.

빈 줄을 입력하는 것은 vstup 을 입력하는 것과 동일하게 처리됩니다 -.

관련 정보