【问题标题】:Shellscript - Show error for specific argument when using mvShellscript - 使用 mv 时显示特定参数的错误
【发布时间】:2017-04-04 07:44:55
【问题描述】:

我目前正在编写将文件移动到“垃圾箱”的脚本代码。 就目前而言 - 代码工作正常,但我希望它在正确移动文件时产生一条消息,并在特定文件移动失败/不存在时产生一条消息。

我的代码将接受多个文件名作为输入,例如

# del test1.txt *.html testing.doc
# Successfully moved to Dustbin

但是,如果其中只有一个不存在,它仍然会产生错误消息。 我该如何做到这一点,但仍允许它接受如上例中所示的参数?

我的代码如下:

#!/bin/sh

mv -u "$@" /root/Dustbin 2>/dev/null

# END OF SCRIPT

抱歉,这可能是一个显而易见的问题!我对 shellscript 完全陌生!

非常感谢

【问题讨论】:

    标签: bash shell arguments


    【解决方案1】:

    您必须遍历参数并尝试移动每个参数:

    for path in "$@"; do
        if mv -u "$path" /root/Dustbin 2>/dev/null; then
            echo "Success"
        else
            printf 'Failed to move %s\n' "$path"
        fi
    done
    

    作为迭代参数的简写,您可以省略 in "$@" like

    for path; do
        if mv -u "$path" /root/Dustbin 2>/dev/null; then
            echo "Success"
        else
            printf 'Failed to move %s\n' "$path"
        fi
    done
    

    【讨论】:

    • 谢谢!我知道我必须回顾每一个论点,但不知道如何去做。我什至不知道我们可以在 bash 中使用 printf - 完全是新手! :)
    猜你喜欢
    • 1970-01-01
    • 2017-04-04
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 2019-05-16
    • 2020-10-15
    相关资源
    最近更新 更多