当前位置: 技术问答>linux和unix
请教一个shell脚本
来源: 互联网 发布时间:2016-08-25
本文导语: bash-3.00$ cat mycp3 #!/usr/bin/ksh #?sed? check=TRUE while getopts n option do case "$option" in n)check=FALSE;; ?)echo "选项错误 用法:mycp [-n] sourcefiles targetfile|targetdirectory -n选项忽略对文件是否存在的常规检查" ...
bash-3.00$ cat mycp3
#!/usr/bin/ksh
#?sed?
check=TRUE
while getopts n option
do
case "$option"
in
n)check=FALSE;;
?)echo "选项错误
用法:mycp [-n] sourcefiles targetfile|targetdirectory
-n选项忽略对文件是否存在的常规检查"
exit 2;;
esac
done
shift $(($OPTIND-1))
num=$#
while [ $# -gt 1 ]
do
filelist="$filelist $1"
shift
done
to=$1
[ $num -lt 2 -o $num -gt 2 -a ! -d $to ]
#echo $?
if [ $num -lt 2 -o $num -gt 2 -a ! -d $to ]
then echo 参数错误
echo 用法:mycp files dir/mycp dir dir/mycp file file
echo " Source file name? Voucher
Destination file name? Voucher.sv"
exit 1
fi
#echo $to
for from in $filelist
do
if [ -d $to ]
then fileto=$to/$(basename $from)
else
fileto=$to
fi
#echo 拷贝到$to
if [ $check = TRUE ]
then
if [ -e $fileto ]
then echo "$fileto文件已存在,是否继续(yes/no)?c"
read isGoon
if [ "$isGoon" = yes ]
then copylist="$copylist $from"
else
echo 复制$from操作取消
fi
else copylist="$copylist $from"
fi
else
copylist="$copylist $from"
fi
done
#echo "$copylist" echo $to
if [ -n "$copylist" ]
then for copy in $copylist
do
if [ -d $copy ]
then cp -r $copy $to
elif [ -e $copy ]
then
cp $copy $to
else echo 源文件$copy不存在
fi
if [ $? -eq 0 -a -e $copy ]
then echo 复制$copy操作成功
else echo 复制$copy操作失败
fi
done
fi
怎样用sed命令代替while循环来处理命令行键入的参数。
还请各位多指教了,O(∩_∩)O~
|
sed 没的循环吧,可以实现读取每行数据