zoukankan      html  css  js  c++  java
  • Shell脚本中的交互式命令处理

    先贴代码:

    DATE=`date -d -1hour +%T`
    fileName=erver_`date -d now +%Y-%m-%d-%H%M%S`.txt
    cp /home/BLload_bak/$fileName
    
    HOST='ipxxx.xxx.xxx.xxx'
    PORT='21'
    USER='xx'
    PASSWD='xx'
    FILE=$fileName
    
    # 注意Here Document中引用的变量必须大写
    /usr/bin/ftp -i -n $HOST $PORT <<EOF
    user ${USER} ${PASSWD}
    binary
    lcd /home/adminxcb/cron/BLload_bak
    put $FILE
    quit
    EOF

    主要记录点在于,通过shell自动和ftp命令交互,也就是<<EOF和最后以EOF结束的中间那部分代码,<<是shell中Here Document的表示方法(具体解释百度或谷歌吧)。

    ftp有个-i参数需要注意一下:-i表示多个文件传送时关闭交互提示。

    基于这些又写了个小练习,来简化mongodb的数据查询,代码如下:

    #/usr/bin/bash
    stty erase '^H'
    
    while true; do
            read -p "> " cmd
            if [ "$cmd"x == "quit"x ]; then
                    break
            fi
            CMD=$cmd
    
            mongo 127.0.0.1 <<EOF
    use WebInfo
    db.auth("mo", "mo")
    db.$CMD
    EOF
    done

    上述代码中stty erase '^H' 是为了清除输入过程中按退格出现的^H字符。

    if对比字符串时需要使用双引号。

  • 相关阅读:
    Vue路由跳转时修改页面标题
    Vue整合Quill富文本编辑器
    XML中的转义字符
    整合SSM框架环境搭建
    Android搞定权限申请
    Android实现秒开效果
    tail -f 与tail -F的区别
    druid 启动报错
    sqoop flume学习笔记
    20180911
  • 原文地址:https://www.cnblogs.com/jasondan/p/3492921.html
Copyright © 2011-2022 走看看