我创建了一个 shell 脚本来完成 3 个简单的任务(压缩目录、重命名最终文件并删除源目录)。脚本源码如下:
#!/bin/bash
if [[ $2 == *"/data/"* ]]
then
src= $2"/*";
dest= $1".zip";
# Just for test
echo $src;
# Commented for now
#zip -r -j $dest $src
#mv $dest $1
#rm -rf $2
else
echo "Invalid arguments";
fi
当我使用这些参数运行上面的脚本时,出现错误:
./scriptzip.sh /data/file-new /data/file-old
./scriptzip.sh: line 4: /data/file-old/*: No such file or directory
./scriptzip.sh: line 5: /data/file-new.zip: No such file or directory
如何防止 shell 为“类似目录”的字符串测试变量?有什么办法可以跳过吗?
空间在 shell 中很重要,因为这就是在命令中划分标记的原因,例如
echo foo bar
or badrm -rf /some/where /
。因此,赋值不能在 : 周围包含空格=
:变量可能还需要引用,具体取决于您希望在此处进行全局扩展和分词(不正确的分词
rm
可能导致意外(和搞笑)文件系统清理)。