相关疑难解决方法(0)

为什么测试"$?" 一个反模式,看一个命令是否成功?

在这里看到测试是否$?是零(成功)或其他东西(失败)是反模式,但我无法在其他任何地方找到它.

坚持维基百科反模式的定义:"反模式(或反模式)是对反复出现的问题的常见反应,这种反复出现的问题通常是无效的,并且可能会产生极大的反作用." 为什么这会是反模式?

bash shell sh

8
推荐指数
1
解决办法
476
查看次数

在Bash条件中感叹号是在括号内还是在括号内是否重要?

似乎你可以写一个否定的条件

if ! [[ ... ]]; then
Run Code Online (Sandbox Code Playgroud)

要么

if [[ ! ... ]]; then
Run Code Online (Sandbox Code Playgroud)

是否有理由选择一种或另一种方法,假设操作的语义相同?(即,显然,在第二个版本中,如果...是复合语句并且您不小心将表达式正确分组,那么您最终可能只会否定表达式的第一部分.)

bash shell

7
推荐指数
1
解决办法
603
查看次数

感叹号是否代表Bash IF条件的否定?

我已经看到了类似的东西

if ! some-command; then
    #do something
fi
Run Code Online (Sandbox Code Playgroud)

感叹号有什么影响?我看到如果你使用括号,它可以用于否定.

这是同样的效果吗?

bash conditional if-statement

5
推荐指数
1
解决办法
888
查看次数

如何在Shell Scripting中检查目录是否为空?

我有一个目录.它是空的.如果我执行ls -lrt,则显示总计0

仅当目录为空时,如何指定If条件才能执行某些操作.

我的意思是问如何捕获0值.

linux bash shell scripting centos

2
推荐指数
2
解决办法
2万
查看次数

[ -r $1 ] 和 [ ! -r $1 ] 在 Bash 中是什么意思?

我了解到 -r 表示递归,这意味着该命令可以在所有子目录中执行。为了确保我理解,我写了下面的两个函数来进行一些测试。我编写以下代码的文件名为 test.sh。在同一个目录中,我有一个名为 subtest 的子目录。在当前目录或子目录中有一个名为 xx.sh 的文件。

#!/bin/bash
function aa {
  if [ ! -r $1 ]
  then
    echo "not exist"
  else
    echo "exist"
  fi
}

function bb {
  if [ -r $1 ]
  then
    echo "exist"
  else
    echo "not exist"
  fi
}

aa xx.sh / bb xx.sh
Run Code Online (Sandbox Code Playgroud)

我发现的结果:

对于 aa 函数,-r如果 xx.sh 在当前目录中,它只会打印“exist”。它不会在子目录中查找 xx.sh。没有-r,当 xx.sh 在当前目录或子目录中时,它将打印“存在”。

对于 bb 函数,使用-r,它只会在当前目录有 xx.sh 时打印“exist”。没有-r,它总是会打印“存在”,即使根本没有 xx.sh (这让我感到惊讶并且没有意义!)。

谁能解释为什么会发生上述结果以及 -r 究竟做了什么?

bash

1
推荐指数
1
解决办法
2569
查看次数

标签 统计

bash ×5

shell ×3

centos ×1

conditional ×1

if-statement ×1

linux ×1

scripting ×1

sh ×1