我想从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
答案 0 :(得分:0)
php_cli
中有PATH
个可执行文件和吗?如果没有,它将无法正常工作......
hash
是测试命令的好方法。如果您不相信,请通过SSH连接到您的服务器并在终端中尝试这个简单的方案:
$ hash ls
$ echo $?
0
$ hash zzz
$ echo $?
1
$ hash php_cli
$ echo $?
???
1
获得hash php_cli
,则表示该广告不可用。0
,php_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