在Bash中[-r$1]和[!-r$1]是什么意思?
我了解到-r表示递归,这意味着该命令可以在所有子目录中执行。为了确保理解,我编写了下面的两个函数来进行一些测试。我编写以下代码的文件名为test.sh。在同一个目录中,我有一个子目录,名为subtest。在子目录的当前目录中有一个名为xx.sh的文件在Bash中[-r$1]和[!-r$1]是什么意思?,bash,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 [
#!/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
我发现的结果是:
对于aa函数,使用-r
,如果xx.sh在当前目录中,它将只打印“exist”。它不会在子目录中查找xx.sh。如果没有-r
,当xx.sh位于当前目录或子目录中时,它将打印“exist”
对于bb功能,使用-r
,它将仅在当前目录包含xx.sh时打印“exist”。如果没有-r
,它将始终打印“exist”,即使根本没有xx.sh(这让我很惊讶,也没有意义!)
有人能解释为什么会出现上述结果,以及-r到底做了什么吗?我的条件文档(这就是您要查找的,因为它在
[
和]
中)如下所示:
我的条件文档(这是您正在寻找的,因为它位于
[
和]
中)如下所示:
如果文件存在并且您对该文件具有读取权限,则可能应该将其作为
-r
测试的副本关闭。人工测试-r文件存在并且授予读取权限。-r
的含义取决于作为参数给出的程序/命令。在本例中,它用于[
,表示检查由下一个参数命名的文件是否可读。请参阅man[
或man test
,以及help test
。Shell语法和语义与上下文密切相关。-r
可以表示“递归”(作为某些文件操作命令的一个选项,尽管其他命令使用了-R
),“是否有读取权限?”(对[
和测试命令),“只读”(对装载命令),“从这里读取”(对磁盘),“重新启动”(对关闭),“恢复”(屏幕),…在命令选项以外的地方,它也可能具有语法含义,在命令选项中,它的含义仍然不同。如果文件存在,并且您对该文件具有读取权限,则可能应将其作为-r
测试的副本关闭。.man test…-r file file file exists and read permission is granded的含义-r
取决于作为参数给出的程序/命令。在本例中,它用于[
,用于检查下一个参数命名的文件是否可读。请参阅man[
或人工测试
,以及帮助测试
。Shell语法和语义与上下文密切相关。-r
可以表示“递归”(作为某些文件操作命令的选项,尽管其他命令使用-r
),“是否有读取权限?”(对于[/code>和测试
命令),“只读”(对挂载命令)、“从这里读取”(对磁盘)、“重新启动”(对关机)、“恢复”(屏幕),…在命令选项以外的地方,它也可以有语法含义,在这里它的含义仍然不同。
-r file
True if file exists and is readable.