如果使用rm Shell linux进行其他操作
我需要帮助解决我的问题。 我需要做一个shell脚本 这是我的主意如果使用rm Shell linux进行其他操作,linux,shell,Linux,Shell,我需要帮助解决我的问题。 我需要做一个shell脚本 这是我的主意 if [ rm -r -f /directorie ]; then code else code fi ... 我该怎么做?此代码可以实现您想要的: #!/bin/bash rm -r /directorie > /dev/null 2>&1; rc="$?" if [ "$rc" -eq "0" ]; then # code here else #
if [ rm -r -f /directorie ]; then
code
else
code
fi
...
我该怎么做?此代码可以实现您想要的:
#!/bin/bash
rm -r /directorie > /dev/null 2>&1; rc="$?"
if [ "$rc" -eq "0" ]; then
# code here
else
# code here
fi
注意:rm-rf/directorie
(带有f
选项)将始终返回返回码=0(true),因此它不适合if
测试
编辑:这个答案可以浓缩成一行代码:
rm -r /home/owner/scripts > /dev/null 2>&1 && code here (true) || code here (false)
如果rm-rf/directory,您是否只想将条件更改为
;然后
?如果rm-r-f/directorie=true,那么您刚才发布的解决方案就是;然后…
不正确,因为无论目录是否存在且是否已被删除,此测试将始终等于true
。查看我的答案,它可能更适合您所寻找的内容。rm-f
无论命令是否有效,都将始终返回0
。如果没有-f
,它将向stderr
写入一条消息,并在出错时返回一个非零值。如果rm-r-f/directorie=true
不执行您认为的操作。它将执行rm
强制递归删除以下内容:/directorie
、=
和true
。由于rm-f
始终返回0
,因此您的代码永远不会执行else
块。即使解决方案正确,您也应该将其作为答案发布,而不是将其包含在问题中。因此,如果用户没有删除目录的权限,会发生什么?检查一个目录是否存在和检查一个目录的递归删除是否成功是完全不同的两件事。你是对的,谢谢你指出这一点。首先,我认为目录测试可以很好地代表正在尝试的内容,因为(我认为)rm-rf
不删除目录的唯一原因是它不存在。我的假设是危险的!当然,权限,也许还有其他事情!我修正了答案。欢迎评论。
dir=/directory
test -d "${dir}" && rm -rf "${dir}" && ! test -d "${dir}" && echo OK || echo NOK