shell脚本解答

下面的shell脚本将文件名作为参数,检查其访问性和可读性,若文件可读则在屏幕上打印该文件内容,请指出该脚本有什么错误#!/bin/shif–r$1then#netexi... 下面的shell脚本将文件名作为参数,检查其访问性和可读性,若文件可读则在屏幕上打印该文件内容,请指出该脚本有什么错误

#!/bin/sh
if –r $1
then #net exists and is readable
echo “File $1 does net exist or not readable.”
exit
else
cat $#
fi
展开
 我来答
百度网友5311d79
2010-10-09 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3142万
展开全部
错误:
1. 需要用 test 命令或 [ ] 来测试文件是否可访问并可读。
2. 判断逻辑错误,if 与 else 里的内容颠倒。
3. $#表示参数个数,取第一个参数应该用$1。
4. $1最好用""包含起来,以防文件路径或文件名中有空格。

修改如下:

#!/bin/sh
if [ -r "$1" ]
then
cat "$1"
else
echo "File $1 does not exist or is not readable."
exit 1
fi

exit 0

另外,建议在脚本开头加上对参数个数的判断(如下)。

if [ $# -ne 1 ]
then
echo "Error: You MUST input one parameter!"
echo "Usage: $0 {fileName}"
exit 1
fi

因为按照你的表达,只应该有一个参数,就是文件名(文件全路径)。如果参数个数不是1,需要报错并提示正确的用法。
淡幻翠98
2010-10-09
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
#! /bin/sh
fn="$*"
if test -r "$fn"
then
printf "$fn file is ok"
cat $fn
else
printf "$fn file is not ok"
fi
你的错误有
1,test -r
2,if逻辑错误
3,$#代表参数个数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式