Bash 如何检查命令;php_cli";在服务器上可用
我想从bash脚本执行此命令:Bash 如何检查命令;php_cli";在服务器上可用,bash,shell,Bash,Shell,我想从bash脚本执行此命令: ssh ${dev_user}@${dev_url} "php_cli ${dev_path}/current/typo3cms database:export" | php typo3cms database:import 问题是只有在可用的情况下才应该使用php\u cli 我试过这个,但似乎不起作用 ssh ${dev_user}@${dev_url} "if hash php_cli 2>/dev/null; then phpsrc=php_cli
ssh ${dev_user}@${dev_url} "php_cli ${dev_path}/current/typo3cms database:export" | php typo3cms database:import
问题是只有在可用的情况下才应该使用php\u 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
php\u cli
是否可执行和在您的路径中?如果没有,它将不起作用
hash
是测试命令的好方法。如果不确定,请通过SSH连接到服务器,并在终端中尝试以下简单方案:
$ hash ls
$ echo $?
0
$ hash zzz
$ echo $?
1
$ hash php_cli
$ echo $?
???
- 如果为
hash php_cli
获取1
,则表示该文件不可用。
- 如果您获得
0
,php\u cli
然后,您可以在自动化脚本中使用哈希
。出于实际原因,我还建议您使用您正在使用的sshpass..
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
如果在路径中找不到给定命令,则有多个命令将返回错误。我从来都不记得每种方法的优缺点,但哪种方法是其中之一