Shell 编程注意点

(一)判断语句

      [$# -lt 4 ]判断语句,格式[空格 比较对象1 比较符号 比较对象2]

      $# 启动脚本时携带参数个数;参数个数总数。

      $1 代表第一个参数。

      $? 最后一次执行名命令的退出状态,0成功,非0失败。

      -eq 等于;-ne 不等于;-gt 大于;-ge 大于等于; -lt 小于; -le 小于等于;

      数值比较 if [ “$1”  -eq “$2” ],其他比较不需要””引号。

      exit 0 正常退出。exit 1 异常退出,终止程序退出。

(二) 判断参数

     if [ ! -d $1 ] 判断目录是否不存在

     -e 存在文件。 -d 目录。-L 符号链接。

    -r 可读。 -w 可写。 -x可执行。

    -f 常规文件。 -s 文件长度不为0。-h 软链接。

    文件1 -nt 文件2  如果文件1比文件2新,则为真。

    文件1 -ot 文件2  如果文件1比文件2旧,则为真。

    if [ -z “$pid” ] 判断变量的值是否为空。zero=0 为空返回0,为true。这个例子为单对括号,变量需要加双引号。

    if [[ -z $pid ]] 双对括号变量不需要加双引号。

     if [ -n “$pid” ] 判断变量的值是否为空。name=0 非空返回0,为true.为空返回1,为false。这个例子为单对括号,变量需要加双引号。

     if [[ -n $pid ]] 双对括号变量不需要加双引号。

(三)sqlplus 结束符号

     sqlplus 用户名/密码@数据库名 <<!或者sqlplus 用户名/密码@数据库名 <<EOF

     EOF是end of file 缩写。

    sql语句结束后需要加!或者EOF.

(四)ftp用法

    open $hostaddr

    user $username $userpassword

    cd /etl/date

    binary

    mget $grepstr*

    mdel $grepstr*

    put $1

   close

   by

   !

(五)while read line用法。 \为键盘左上方顿号,1旁边。

    while read line

    do

        tbname=\echo $line | awk | -F’,’ ‘{print $1}’\

        tbspace=\echo $line | awk | -F’,’ ‘{print $2}’\

       echo $tbname

       echo $tbspace

       sh xxxx

  done < t.ini

t.ini文件如下

T1,F1,1

T2,F2,1

 

(六) for 用法

  for((i=1;i<=$1;i++)); do

    echo “$i”

 sqlplus $DB<<EOF&

   @/etl/$2.sql $i

 

(七)export 设置或显示环境变量

export JAVA_HOME=/etl/bin

 

posted @ 2019-04-08 15:22  菜鸟MM  阅读(777)  评论(0编辑  收藏  举报