Linux shell脚本“没有这样的文件或目录”

我创build了一个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为“目录”stringtesting一个variables? 有什么办法可以跳过?

这个空间在shell中是很重要的,因为这就是在诸如echo foo barrm -rf /some/where /命令中划分令牌的原因。 因此,赋值不得包含=周围的空格:

 foo=/etc/* echo $foo 

variables也可能需要引用,具体取决于你想要在这里发生glob扩展和分词(不正确的单词拆分为rm可能会导致意外(和搞笑)的文件系统清理)。

 echo "$foo"