我可能在这里缺少 bash 函数变量语法的基本内容。
我对 zip 命令语法的理解是它是zip newfilename.zip filetobezipped
.所以我希望我的函数能够压缩指定的文件夹及其所有内容,并且我希望结果、压缩文件夹的名称与内容的名称相同,只是添加了 .zip。然后我将其复制到 Windows 目录并将其从 linux 目录中删除。
需要明确的是,如果我想要压缩的文件名为“something”,那么我希望压缩版本被命名为“something.zip”。
但是,此函数会生成一个隐藏的 zip 文件,.zip
句点之前没有字母。所以看来我的变量 $1 没有正确传递到函数中。
params: $1: filename, $2: week_x, $3: day_y
hwcopy() {
zip -r $1.zip $1
cp $1.zip /mnt/c/Users/myName/Desktop/homework/$2/$3
rm -r $1.zip
}
我如何调用它(从父目录中):$ hwcopy file_folder_name/ week_x day_5
答案1
经过更多测试后我意识到问题出在我所说的方式上。
zip file_name/.zip file_name
不会起作用,但zip file_name.zip file_name
会起作用。
所以我将其称为${1%/}.zip
函数内部,以切断斜杠字符。