Bash脚本 - 文件目录不存在

8

我正在创建一个非常简单的bash脚本,用于检查目录是否存在,如果不存在则创建一个。

然而,无论我放置哪个目录,它都找不到!

请告诉我我做错了什么。

下面是我的脚本。

#!/bin/bash
$1="/media/student/System"

if [ ! -d $1 ]
then

    mkdir $1
fi

以下是命令行错误:

./test1.sh: line 2: =/media/student/System: No such file or directory

你的脚本在 if 测试之前停止了。你的分配有误。 - Aserre
你为什么使用$1?这是一个特殊变量:https://dev59.com/_14b5IYBdhLWcg3wXAV1 - yunzen
1
你想要做的正确方法是:my_var="/media/student/System"; if[ ! -d $my_var] .... - Aserre
你可以使用参数p来更轻松地执行mkdir命令。 - yunzen
2个回答

14

试一试

#!/bin/bash

directory="/media/student/System"

if [ ! -d "${directory}" ]
then
    mkdir "${directory}"
fi

通过 mkdir 的 parent 参数甚至可以更短(mkdir 的手册页面)


#!/bin/bash

directory="/media/student/System"
mkdir -p "${directory}"

1
虽然在这个特定的硬编码字符串示例中没有问题,但总是引用您的变量可能仍然更好。 - Eric Renouf

3
在Bash中,你不能以数字或符号(下划线_除外)开头定义变量。在你的代码中,你使用了$1,这样做是试图将"/media/student/System"赋值给$1,我想你可能误解了Bash中参数的工作方式。我认为以下是你想要的:
#!/bin/bash
directory="$1" # you have to quote to avoid white space splitting

if [[ ! -d "${directory}" ]];then
     mkdir "$directory"
fi

像这样运行脚本
$ chmod +x create_dir.sh
$ ./create_dir.sh "/media/student/System"

该代码的作用是检查"/media/student/System"是否为目录,如果不是,则创建该目录。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接