编写一个shell脚本,脚本名为shell,执行该脚本的功能是:判断第一个位置参数是否是

“/root”目录,若是则列出该目录下所有文件(包括隐含文件),并且将显示的内容输出到“13out”文件中,若不是“/root”目录则提示“第一个位置参数不是/root目录!”程序结束。然后判断第二个及后面各个位置参数,若是普通文件则显示其内容,若是目录文件则提示该文件为目录文件,否则提示该文件既不是普通文件也不是目录文件。根据题意编写好脚本保存之后并执行,且要求将第二个其以后的位置参数的普通文件的内容追加到“13out”文件中。并写出你执行该脚本的命令:

#!/bin/bash

if [ $# -lt 1 ];then
    echo "usage $0 [path or file]"
    exit -1
fi

if [ "$1" = "/root" ];then
    ls -a $1 | tee 13out 
else
    echo "第一个位置参数不是/root目录!"    
    exit -2
fi

argc=0
for i in $@
do
    argc=$(($argc+1))
    if [ $argc -eq 1 ];then
        continue
    fi
    if [ -f $i ];then
        echo "$i 的文件内容:" | tee -a 13out
        cat $i | tee -a 13out
    elif [ -d $i ];then
        echo "$i 为目录文件"
    else
        echo "$i 既不是普通文件也不是目录文件"
    fi 
done

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-20
if($1=='/root') ##第一个参数是/root
then
cd /root ##切换到/root目录
ls -a|tee -a 13out ##显示/root下所有文件并追加到13out
for i in $* ; do ##循环其它参数
if(i -ne 1) ##略过第一个参数
then
if( -f $i) ##如果是文件 打印文件内容并输出到13out
then
cat $i|tee -a 13out
elif(-d $i) ##如果是目录输出提示
then
echo $i为目录文件
else ##其它情况输出提示
echo $i既不是普通文件也不是目录文件
fi

done
else ##如果第一个参数不是/root 打印信息并退出
echo "第一个位置参数不是/root目录!"
exit 0
fi

没测试过 自己试试吧
第2个回答  2013-12-20
#!/bin/bash
(( $# > 0 )) || exit
[[ ! $1 =~ ^[/]*root$ ]] && echo "第一个位置参数不是/root目录" && exit
ls -a /$1 > 13out
shift
while (( $# > 0 ))
do
    [ -f $1 ] && echo "File "$1":" >> 13out && cat $1 >> 13out && shift && continue
    [ -d $1 ] && echo "this dir" && shift && continue
    echo "该文件($1)既不是普通文件也不是目录文件"
    shift
done

相似回答