【问题标题】:How to execute command after CP command in bash?如何在bash中执行CP命令后的命令?
【发布时间】:2020-04-08 09:22:50
【问题描述】:

我试图让脚本在使用udev 插入 USB 时执行。但我遇到了一个问题:手动运行脚本正如我预期的那样运行良好。但是当我运行自动(USB插件)时,cp之后的命令不起作用并且所有文件都已成功复制。 这是我的脚本:

mount /dev/sda4 /media
echo "Mounted USB" > /dev/ttymxc0

cp *.mp4 /media
echo "Transfer successfully" > /dev/ttymxc0
umount /media

传输成功 - 未显示且未卸载 USB。 我该怎么办?

非常感谢!

注意:我尝试使用一些 20MB 的文件效果很好。但是当我尝试使用 20 个文件时,我得到了那个错误。所有文件都已复制,但cp 命令之后的其他命令未执行。

【问题讨论】:

    标签: bash echo cp udev


    【解决方案1】:

    进行适当的错误处理。

    if mount /dev/sda4 /media
    then
      echo "Mounted USB" > /dev/ttymxc0
    else
      echo "Can not mount" >&2
      exit 1
    fi
    
    if cp *.mp4 /media
    then
      echo "Transfer successfully" > /dev/ttymxc0
    else
      echo "Can not copy" >&2
    fi
    
    if umount /media
    then
      exit 0
    else
      echo "Can not unmount" >&2
      exit 1
    fi
    
    

    【讨论】:

    • 好吧,我试着按照你的指南。但是问题没有解决。我认为主要问题是时间执行,如果超过时间,它将不会继续。
    【解决方案2】:
    mount /dev/sda4 /media
    echo "Mounted USB" > /dev/ttymxc0
    
    cp *.mp4 /media
    echo "Transfer successfully" |  tee -a /dev/ttymxc0
    umount /media
    

    来自man页面

    tee - 从标准输入读取并写入标准输出和文件

    您正在将输出重定向到文件。

    【讨论】:

    • 我尝试按照您的指南进行操作。但它也不起作用。
    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    相关资源
    最近更新 更多