linux - 无法理解简单的 bash 脚本

标签 linux bash

我对 bash 脚本很陌生,所以我不能真正理解下面这一行的作用:

[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config

我猜这个双方括号是一个 if 语句。我知道我们将 "Host *\n\tStrictHostKeyChecking no\n\n" 转换为 config 文件,但那里的其他内容是什么。非常感谢新手的一些文档或教程。提前致谢!

最佳答案

[[ ... ]] 是一个函数,它计算其中的语句并返回 true 或 false。

-f 表示“文件存在”:http://tldp.org/LDP/abs/html/fto.html

&&表示“and”,表示如果前一条语句返回true则执行下一条语句

echo -e 表示将第二个参数中的字符串打印到标准输出并解释转义序列,例如“\n”。

> ~/.ssh/config 表示将前面语句的stdout写入“~/.ssh/config”

详细且可能更容易理解的版本是:

if [[ -f /.dockerenv ]]; then
   echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
fi

关于linux - 无法理解简单的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51346416/

相关文章:

linux - 如何阻止 Linux 计算机上的所有其他进程 XXX 毫秒?

linux - 在 Linux 中的多个线程上阻塞 read() 和 write()

bash - 使用 sed/awk 打印具有匹配模式或另一个匹配模式的行

linux - 复制修改后的文件及其文件结构

linux - 使用 aio_write() 但仍然看到数据通过缓存?

java - 我在启动 eclipse 时收到此错误。我已经重新安装了很多次,仍然收到此错误。?

aio_write 到文件请求后更改数据

linux - 如何使用斜杠修改配置参数值

linux - IFS 和通过目录中的单个位置移动

linux - 进行递归搜索并创建具有匹配模式的文件列表