我正在制作一个简单的shell脚本,我需要测试一个目录(如果存在),删除它并创建一个新目录,如果不存在,则创建它。

这是我到目前为止所拥有的:

if ( ! -d /numbers ); then
        echo "does not exist, creating directory"
        sleep 3s
        mkdir numbers
        echo "Directory created."
else
        echo "Removing existing directory and creating a new one"
        sleep 2s
        rmdir numbers
        echo "directory removed"
        sleep 1s
        mkdir numbers
        echo "Directory created"
fi

但这给我一个错误信息:

myscript.sh: line 17: -d: command not found

以及目录是否存在:

mkdir: cannot create directory `numbers': File exists

===============>>#1 票数:1

您需要在if语句中使用方括号进行测试。 您还使用了rmdir,它仅在目录为空时才起作用。 如果要删除它及其内容,请使用rm -r numbers

也许是这样的:

if [ ! -d numbers ]; then
        echo "does not exist, creating directory"
        sleep 3s
        mkdir numbers
        echo "Directory created."
else
        echo "Removing existing directory and creating a new one"
        sleep 2s
        rm -r numbers
        echo "directory removed"
        sleep 1s
        mkdir numbers
        echo "Directory created"
fi

  ask by user3524591 translate from so

未解决问题?本站智能推荐:

1回复

如何在Unix Shell脚本中的ssh命令中使用su命令

我的要求是登录到远程计算机,并为此创建一些文件夹,我打算以用户名和pwd作为用户的输入,并尝试使外壳程序脚本自动化。 1.)我使用以下代码将SSH SSH到计算机中,并提供了预期的密码以登录到该计算机。 以上工作正常。 但是在此之后执行su dsadmin时。 我无法使用先前获
3回复

在Unix服务器上声明变量

我试图在其中一台远程服务器(Box1)上登录,并试图在远程服务器(Box1)上读取一个文件。 其中包含另一个服务器(Box2)的详细信息,基于该详细信息,我必须回到本地服务器并ssh到另一个服务器(Box2)进行一些数据处理。 等等..... 但是我在本地计算机上没有获得“ serv
2回复

ssh中带有管道变量的egrep命令抛出此类文件或目录错误

好了,我又在和ssh挣扎了。 我正在尝试基于令牌从远程日志文件中检索一些数据。 我试图通过ssh在egrep命令中传递多个令牌: $ v如下所示,但是它的长度是动态的。 这意味着它可以有许多用管道分隔的文件名。 我得到的输出是: 值得注意的是,我的日志文件数据中有空
1回复

通过SSH查找/替换根目录中的所有文件

我刚注意到我的网站被黑了,所有的.php文件在第1行都有一个base64编码字符串。每个文件的字符串相同,所以... 如何搜索我的整个根目录并删除它?
10回复

如何使用Bash脚本中的密码运行sftp命令?

我需要从Linux主机使用sftp将日志文件传输到远程主机。 我的运营小组提供了相同的凭据。 但是,由于我无法控制其他主机,因此无法生成和与其他主机共享RSA密钥。 那么,是否有一种方法可以通过cron作业从Bash脚本内部运行sftp命令(提供用户名/密码)? 我发现了一个类似的Stack O
3回复

在远程主机上执行脚本-在本地主机中给出输出

我正在尝试执行两个脚本,这些脚本可以作为具有755个权限的远程主机上的sh文件使用。 我尝试从客户端主机调用它们,如下所示: 以上几行在本地主机上的脚本中。 在本地主机上运行脚本时,远程主机上的第一个命令(即stopScript.sh)将正确执行。 它可以终止正在运行的进程,而
1回复

编写bash shell脚本以针对多个服务器测试ping并将报告发送到电子邮件以获取无响应的服务器

该脚本工作正常,但问题是它正在为每个主机单独发送邮件,假设无法访问的服务器数量更多(三位数)..我不认为这样做是最佳做法 我想在一封电子邮件中查看下降主机列表,请您帮我修改脚本..我是Shell脚本的新手,请帮助。 非常感谢 参考:- 使用ping命令测试多个UNIX服务器
1回复

未在ssh -X中设置变量值[重复]

这个问题已经在这里有了答案: 在循环内的bash shell脚本中执行ssh命令[重复] 1答案 我是Oracle DBA,并且正在执行一些脚本检查数据库是否在我们的大量服务器上处于活动状态。 我正在尝试将值设置为ssh -X中的变量 上面的示例运行良
1回复

ssh命令输出以保存在shell脚本中的文本文件中

我想编写shell脚本,在其中使用ssh命令。 无论我通过ssh命令获得什么输出,我都希望将其保存在文本文件或varibale中,因此我可以在我的shell脚本中使用它。 目前,我将输出保存在变量中,但是当我在ssh命令之外使用该变量时,值显示为空白。 代码是 我打印时var值是空
1回复

在shell脚本中自动回答ssh-copy-id

我正在写一个shell脚本,我想使用ssh-copy-id自动登录到远程计算机,因此在打印时手动进行: $ 1表示密码 ,$ 2表示用户名 ,$ 3表示端口 ,$ 4表示ip ,这是可以的,问题是我必须在之后自动插入密码: 我添加了这个“ | printf $ 1 ”,但是它不起