#!/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 相同-
。