我创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 bar或rm -rf /some/where /命令中划分令牌的原因。 因此,赋值不得包含=周围的空格:
foo=/etc/* echo $foo
variables也可能需要引用,具体取决于你想要在这里发生glob扩展和分词(不正确的单词拆分为rm可能会导致意外(和搞笑)的文件系统清理)。
echo "$foo"