Linux shell脚本“没有那个文件或目录”

Linux shell脚本“没有那个文件或目录”

我创建了一个 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 测试变量是否为“目录类似”字符串?有什么方法可以跳过这一步吗?

答案1

空格在 shell 中非常重要,因为它用于划分命令中的标记,例如echo foo bar或更糟糕的rm -rf /some/where /。因此,赋值时不能在 周围包含空格=

foo=/etc/*
echo $foo

变量可能也需要引用,这取决于您到底想在这里进行全局扩展和单词拆分(不正确的单词拆分可能会rm导致意外(且有趣的)文件系统清理)。

echo "$foo"

相关内容