Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何将shell脚本中输入的所有参数移动到文件夹中?_Bash_Shell_Command_Arguments - Fatal编程技术网

Bash 如何将shell脚本中输入的所有参数移动到文件夹中?

Bash 如何将shell脚本中输入的所有参数移动到文件夹中?,bash,shell,command,arguments,Bash,Shell,Command,Arguments,我试图将脚本运行时给出的所有参数移动到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

我试图将脚本运行时给出的所有参数移动到
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“
附加了每个文件的版本
(日期命令)

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

输出将如下所示。/script.sh file1 file2 file3 -其中3个文件被移动到
RecycleBin

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

非常感谢您的帮助

谢谢 皮特

该测试应为:

[ -e "$i" ]
另外,在
mv
命令中,您应该使用
$i
而不是
$*
。就我个人而言,我只想完全摆脱
if
语句<如果文件不存在,则code>mv
将打印错误消息,无需自己执行

要处理带有空格的文件名,最佳做法是使用
“$@”
代替
$*
,并用引号将变量名括起来,如下所示:

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

@user2232423它基本上是
$*
的空白安全版本。有关详细信息,请参阅。@user2232423我猜前三个错误来自脚本中的其他地方,因为您发布的内容中没有“指定”、“重复”或“显示”字样。
mv
错误告诉您目录
/path/to/RecycleBin
不存在。
for file in "$@"; do 
    mv "$file" "/path/to/RecycleBin/$file.$(date +%Y%m%d.%H%M%S)"
done