shell笔记--工作中用到的shell(1)

今天完成了一个小的需求,也是入职的第一个需求,功能非常简单,但是对我而言还很陌生。

需求说明:

将特定格式的文本数据批量存入ORACLE数据库

脚本语言:shell

用到shell的几个基本知识点:

①怎么传递参数

  $n: $0执行文件名

             $1第一个参数

             $2第二个参数(依次类推)

②怎么处理参数

  $#: 参数个数

       $*: 得到所有参数组成一个字符串整体

       $@: 输出所有参数,在加""时是类似列表形式(注意与$*的差别)

  $?: 脚本执行最后退出状态。0表示没有错误,其他值表示有误

  判断参数个数一般写法

  if[ $# -ne 2]

  then 

        echo "miss arguments!"

     exit -1

  fi 

③获取主目录

  ${HOME}

④`**`的用法

  **是执行的shell脚本,``包裹后将脚本执行的结果作为变量使用,例如

  for filename in `ls $DIR/file*`

  do

    XXX

  done

⑤tail和head命令

  tail filename:默认将文件中最后的10条记录输出

  tail -n filename: 将文件中最后的n条记录输出

  head同理

  组合使用:tail -20 filename | head -5  输出倒数20-15条记录

  【tail语法】

        tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
  参数解释:
  -f 该参数用于监视File文件增长。
  -c Number 从 Number 字节位置读取指定文件
  -n Number 从 Number 行位置读取指定文件。
  -m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。
  -b Number 从 Number 表示的512字节块位置读取指定文件。
  -k Number 从 Number 表示的1KB块位置读取指定文件。
  File 指定操作的目标文件名称
  上述命令中,都涉及到number,假设不指定,默认显示10行。Number前面可使用正负号,表示该偏移从顶部还是从尾部開始计算。
  tail可运行文件一般在/usr/bin/以下。

⑥三目运算

  看个例子:

  [ ${FILE_NAME%.txt} == ${FILE_NAME} ]&& WORK_DATE=${FILE_NAME:$((LENGTH-8)):8}|| WORK_DATE=${FILE_NAME:$((LENGTH-12)):8}

⑦字符串截取

  有很多方法,这里记录用到的。

        slice_str=${str:start:length}

⑧sqlplus命令操作ORACLE数据库

  命令结构:

  sqlplus -s $DBNAME<<!

    【SQL语句】

  !

  注意!!!在for循环体里面使用该命令,sqlplus要与for对齐,没有深入了解原因,反正不对齐就报错。

⑨环境变量

  添加export

  $ export MYNAME=”my name is lg” 

  $ echo $ MYNAME 
   my name is lg
  查看所有环境变量env
posted @ 2018-04-15 10:40  lgzy  阅读(159)  评论(0)    收藏  举报