zoukankan      html  css  js  c++  java
  • 按行读取文件后read标准输入不执行

    按行读取文件后read标准输入不执行

      上一篇阿里云oss空间清理【https://www.cnblogs.com/windysai/p/15573975.html】,最后提到一个删除的操作。

    ssh -p远程机器端口 root@远程机器ip '
        rm -rf 远程挂载oss的bucket/考试id*
    '

      文章有个判断:if [ "${remotenum}" == "${strnum}" ];,代表本地备份的文件数和远程考试id的文件数一致,本来这个删除想放到这个判断下,想想应该加多一个二次确认,再进行操作,跑下来的结果如下:

      竟然不然我输入“y”进行删除确认,直接跳过去了。

      于是我做了个实验:

    1、准备要删除的列表目录

    2、写有脚本:test.sh

    #!/bin/bash
    
    cat /root/scripts/test-1120 | while read line
    do
       read -p "确定要删除$line 么,输入是或否(y/n): " choice
       if [ "$choice" == "y" ];
    then
    echo "开始删除。。。" rm -rf /tmp/deletedir/${line} fi done

    其中文件test-1120内容如下:

    3、运行效果

     

     竟然把文件:test-1120,当前读取的下一行传递给choice了。

    解决:不要写两个read,外层循环改成for

    改良脚本如下:

    for i in `cat /root/scripts/test-1120`
    do
       read -p "确定要删除$i 么,输入是或否(y/n): " choice
       if [ "$choice" == "y" ];
       then
          echo "开始删除。。"
          rm -rf /tmp/deletedir/${i}
       fi
    done 

  • 相关阅读:
    AJAX基础
    DOM事件机制(事件捕获和事件冒泡和事件委托)
    http协议
    DOM实战-js todo
    python常见面试题
    jQuery快速入门
    三级菜单
    购物车
    员工信息表
    random模块
  • 原文地址:https://www.cnblogs.com/windysai/p/15582873.html
Copyright © 2011-2022 走看看