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