Shellscript - 使用mv时显示特定参数的错误

时间:2016-11-21 00:49:11

标签: bash shell arguments

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

我的代码会接受多个文件名进行输入,例如

#!/bin/sh

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

# END OF SCRIPT

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

我的代码如下:

{{1}}

对不起,这可能是一个显而易见的问题!我是shellcript的新手!

非常感谢

1 个答案:

答案 0 :(得分: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 "$@"之类的

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