Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何检查命令;php_cli";在服务器上可用_Bash_Shell - Fatal编程技术网

Bash 如何检查命令;php_cli";在服务器上可用

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

我想从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 ; 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

如果在路径中找不到给定命令,则有多个命令将返回错误。我从来都不记得每种方法的优缺点,但
哪种方法是其中之一