我正在努力让我的Capistrano部署脚本正常工作,但它没有进行符号链接,因为它配置如下所示。
set :linked_files, %w{config/database.yml}
set :linked_dirs, %w{log tmp vendor/bundle public/system}
当它运行相关命令时,我得到以下内容:
WARN [SKIPPING] No Matching Host for /usr/bin/env [ -f /path/to/shared/config/database.yml ]
如果我在服务器上运行此命令,无论是通过ssh还是通过登录到服务器并运行命令,我都没有得到命令的响应。
user: ~
$ [ -f /path/to/shared/config/database.yml ]
user: ~
$
该文件确实存在于指定位置并具有权限。
user: ~
$ ll /path/to/shared/config/
total 4.0K
drwxrwxr-x 2 user group 33 Nov 30 10:58 .
drwxrwxr-x 7 user group 89 Nov 30 10:58 ..
-rwxrwxr-x 1 user group 805 Nov 30 10:58 database.yml
user: ~
这不应该返回真或假,而不是什么?是否有我可能已更改的配置会抑制输出?无论文件是否存在,我都没有得到任何回复。
答案 0 :(得分:0)
在您对实际问题的回复中,test
([
是别名)确实不将输出返回到stdout。它返回退出代码。
user: ~
$ [ -f /path/to/shared/config/database.yml ] # if the file exists
user: ~
$ echo $?
0
user: ~
$ [ -f /path/to/shared/config/database.yml ] # if the file does not exist
user: ~
$ echo $?
1
如果文件存在, test -f /path/to/file
(或[ -f /path/to/file ]
)会产生退出代码0
,如果不存在,则会1
。如果要检查文件是否存在并回显其路径,请尝试:
[ -f /path/to/file ] && echo "/path/to/file"