【问题标题】:How do I move all arguments entered in a shell script to a folder?如何将在 shell 脚本中输入的所有参数移动到文件夹中?
【发布时间】:2013-03-25 11:20:57
【问题描述】:

我正在尝试将运行脚本时给出的所有参数移动到RecycleBin 目录。我正在使用RecycleBin="$HOME/Recycled"RecycleBin 设置为我的主文件夹中的一个目录。

然后我想将所有参数文件/目录移动到RecycleBin 目录。

这是我目前得到的:

for  i in $* 
do
if [ $* -e ]
then
mv $i /path/to/RecycleBin/$*.`date +"%Y%m%d.%H%M%S"`
else
echo "The file does not exist"
fi
done

其中.date +"%Y%m%d.%H%M%S" 附加每个文件的版本(date command)

for i in $* 正在检查命令中的所有参数。

输出看起来像这样 ./script.sh file1 file2 file3 - 3 个文件被移动到RecycleBin

这不起作用,因为我的循环函数不正确。

不胜感激

谢谢 皮特

【问题讨论】:

    标签: bash shell command arguments


    【解决方案1】:
    [ $* -e ]
    

    那个测试应该是这样的:

    [ -e "$i" ]
    

    同样在mv 命令中,您应该使用$i 而不是$*。就我个人而言,我会完全摆脱if 声明。 mv如果文件不存在会打印出错误信息,不需要自己动手。

    要处理包含空格的文件名,最好使用"$@" 代替$*,并用引号将变量名括起来,如下所示:

    for file in "$@"; do 
        mv "$file" "/path/to/RecycleBin/$file.$(date +%Y%m%d.%H%M%S)"
    done
    

    【讨论】:

    • @user2232423 它基本上是$* 的空白安全版本。详情请参阅bash(1) man page
    • @user2232423 我猜前三个错误来自脚本中的其他地方,因为您发布的任何内容都没有“指定”、“重复”或“显示”等词。 mv 错误告诉您目录/path/to/RecycleBin 不存在。
    猜你喜欢
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2015-11-15
    • 1970-01-01
    • 2021-11-09
    • 2018-10-05
    相关资源
    最近更新 更多