任何人都可以帮助我以下。我不明白什么是错的,没有得到任何输出。我的要求是读取一个文件并检查它是否为空并逐行打印内容。
#!/bin/ksh
echo " enter file name "
read $file
if [ -f "$file" ] && [ -s "$file" ]
then
echo " file does not exist, or is empty "
else
while IFS='' read -r line || [[ -n "$file" ]];do
echo "$line"
done
fi
答案 0 :(得分:1)
read $file
应为read file
您的比较逻辑是倒退的。
比较if [ -f "$file" ] && [ -s "$file" ]
是'如果文件是常规文件而不是空则进入错误情况'。你想要'如果文件不规则或文件是空的,请进入错误案例'if [ -f "$file" ] -eq 0 || [ -s "$file" ] -eq 0
。
while IFS='' read -r line
do
echo "$line"
done < "$file"