scp脚本-shell模板-shell参数处理

scp shell脚本,shell脚本模板

#!/bin/bash

set -e

usage()
{
    cat <<EOF
Usage: $(basename $0) [OPTIONs]

Package all file in SOURCE directory and send to remote DESTINATION.
The default value of DESTINATION and SOURCE directory can be set in
this script by variable 'dstdir' and 'srcdir'.

  -h       show this help information.
  -d       remote DESTINATION like 'cjl-target@10.0.110.193:/home/cjl-target/zynq/yocto_images'.
  -s       SOURCE directory. Default '.'.
  -n       archived file's name. Default 'allfiles.tar.gz'.
  -f       copy a file or a directory specified by SOURCE to DESTINATION.

EOF
}

ARGV=$(getopt -n $(basename $0) -o hd:s:n:f -l help,destination:,source:,name:,file -- "$@")
echo "[DEBUG] all options and value:$ARGV"
eval set -- "$ARGV"

# default value
dstdir="cjl-target@10.0.110.193:/home/cjl-target/zynq/yocto_images"
srcdir=.
tarname=allfiles.tar.gz

# internal variables
doarchive=yes
# src type: d--directory f--normal file n--not exist
srctype=n
while true
do
    case "$1" in
    -h|--help)
      usage
      exit 0
      ;;
    -d|--destination)
      dstdir=$2
      shift 2
      ;;
    -s|--source)
      srcdir=$2
      shift 2
      ;;
    -n|--name)
      tarnamexi=$2
      shift 2
      ;;
    -f|--file)
      doarchive=no
      shift
      ;;
    --)
      break
      ;;
    *)
      echo "[ERROR] unknown option $1" 1>&2
      usage 1>&2
      exit 22
   esac
done

# $srcdir is not exist.
if ! test -e $srcdir
then
  echo "[ERROR] file or directory not found" 1>&2
  exit 2
elif test -f $srcdir
then
  srctype=f
elif test -d $srcdir
then
  srctype=d
fi

if test $srctype != d && test $doarchive = yes
then
  echo "[ERROR] $srcdir is not a directory" 1>&2
  exit 20
fi

echo "-----------------------------------------"
echo "[INFO] source dir :$srcdir"
echo "[INFO] source type:$srctype"
echo "[INFO] destination:$dstdir"
echo "[INFO] doarchive  :$doarchive"
echo "[INFO] archivename:$tarname"
echo "-----------------------------------------"

# determine whether tar or not.
if test $doarchive = yes
then
  echo "[CMD] tar cfz $tarname $srcdir/*"
  #tar cfz $tarname $srcdir/*
  echo "[CMD] scp $tarname $dstdir"
  #scp $tarname $dstdir
else
  if test $srctype = d
  then
    echo "[CMD] scp -r $srcdir $dstdir"
    #scp -r $srcdir $dstdir
  elif test $srctype = f
  then
    echo "[CMD] scp $srcdir $dstdir"
    #scp $srcdir $dstdir
  else
    echo "[ERROR] unexpect error" 1>&2
    exit 22
  fi
fi

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值