如何测试是否存在两个文件?

新手上路,请多包涵

我想检查这两个文件是否存在,但我得到

test.sh: line 3: [: missing `]'

任何人都可以看到有什么问题吗?

 #!/bin/sh

if [ -f .ssh/id_rsa && -f .ssh/id_rsa.pub ]; then
   echo "both exist"
else
   echo "one or more is missing"
fi

原文由 Sandra Schlichting 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 590
2 个回答

尝试添加一个额外的方括号。

 if [[ -f .ssh/id_rsa && -f .ssh/id_rsa.pub ]]; then

原文由 Raghuram 发布,翻译遵循 CC BY-SA 3.0 许可协议

[ -f .ssh/id_rsa -a -f .ssh/id_rsa.pub ] && echo both || echo not

或者

[[ -f .ssh/id_rsa && -f .ssh/id_rsa.pub ]] && echo both || echo not

此外,如果您使用 [[ ]] 解决方案,您可能需要将 #!/bin/sh 更改为 #!/bin/bash 以符合您的问题标签。

原文由 Michael Krelin - hacker 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题