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

Bash Shellscript-使用mv时显示特定参数的错误,bash,shell,arguments,Bash,Shell,Arguments,我目前正在为脚本编写代码,以便将文件移动到“垃圾箱”。 目前,代码运行良好,但我希望它在文件正确移动时生成消息,在特定文件无法移动/不存在时生成消息 我的代码将接受输入的多个文件名,例如 # del test1.txt *.html testing.doc # Successfully moved to Dustbin 但是,如果其中只有一个不存在,它仍然会生成错误消息。 如何做到这一点,但仍允许它接受上述示例中所示的参数 我的代码如下: #!/bin/sh mv -u "$@" /root

我目前正在为脚本编写代码,以便将文件移动到“垃圾箱”。 目前,代码运行良好,但我希望它在文件正确移动时生成消息,在特定文件无法移动/不存在时生成消息

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

# del test1.txt *.html testing.doc
# Successfully moved to Dustbin
但是,如果其中只有一个不存在,它仍然会生成错误消息。 如何做到这一点,但仍允许它接受上述示例中所示的参数

我的代码如下:

#!/bin/sh

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

# END OF SCRIPT
很抱歉,这可能是一个显而易见的问题!我对shellscript完全是新手


非常感谢

您必须迭代参数并尝试移动每个参数:

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
作为迭代参数的简写,您可以在“$@”中省略
,如

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——这完全是新手!:)