如何检查命令“php_cli”是否在服务器上可用

时间:2017-05-16 13:44:48

标签: bash shell

我想从bash脚本执行此命令:

ssh ${dev_user}@${dev_url} "php_cli ${dev_path}/current/typo3cms database:export" | php typo3cms database:import

问题是php_cli只应在可用的情况下使用。

我尝试了这个,但似乎无法正常工作

ssh ${dev_user}@${dev_url} "if hash php_cli 2>/dev/null; then phpsrc=php_cli ; else phpsrc=php; fi && ${phpsrc} ${dev_path}/current/typo3cms database:export" | php typo3cms database:import

2 个答案:

答案 0 :(得分:0)

php_cli中有PATH个可执行文件吗?如果没有,它将无法正常工作......

hash是测试命令的好方法。如果您不相信,请通过SSH连接到您的服务器并在终端中尝试这个简单的方案:

$ hash ls
$ echo $?
0
$ hash zzz
$ echo $?
1
$ hash php_cli
$ echo $?
???
  • 如果1获得hash php_cli,则表示该广告不可用。
  • 如果您获得0php_cli可用。

然后,您可以在自动化脚本中使用hash。出于实际原因,我还建议您使用 sshpass ...

答案 1 :(得分:0)

您正在使用

ssh ${dev_user}@${dev_url} " command " 

如果你在"之间的远程主机上执行命令"变量宣告不会工作。如果您使用' '变量声明将起作用,但局部变量不会因此你必须制动' '对于局部变量,例如:' $ var1'为了使两者都工作,即使你同时使用相同的名称,它仍然有效:

var1=local_var
ssh ${dev_user}@${dev_url} 'hash ls 2>/dev/null && var1=php_cli1 || var1=php1 && echo 'var1'; echo $var1'

输出:

local_var
php_cli1