#!/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 을 입력하는 것과 동일하게 처리됩니다 -
.