我需要帮助传递Linux bash-script变量来执行PHP CLI命令。
我正在处理执行PHP CLI命令的bash脚本,该命令从bash-script(如folder-path)获取输入变量,以包含用于访问PHP文件类的文件。
但是,执行bash-script时会发生的事情是传递给PHP CLI命令的变量充当PHP的变量。
下面是示例代码我的脚本
file="$folderpath"somefile.php mage_version=$(php -r 'include "$file";print_r(Mage::getVersionInfo());') 以下是我得到的错误
PHP Notice: Undefined variable: file in Command line code on line 1 PHP Warning: include(): Filename cannot be empty in Command line code on line 1
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Bash脚本中,当你需要将变量嵌入到字符串中并传递给其他命令时,你需要确保正确地引用和展开这些变量。你的问题在于双引号没有正确包围 $file
变量,导致PHP无法识别它作为外部传入的路径。你应该这样修改你的脚本:
folderpath="/path/to/your/folder" # 确保这个变量已经定义且赋值正确
file="$folderpath/somefile.php"
mage_version=$(php -r "include '$file';print_r(Mage::getVersionInfo());")
这里的关键更改是使用了外层单引号 '...'$file'...'
来包围整个PHP代码字符串,并在 $file
变量周围保留了双引号 "$file"
以确保其在Bash中的正确展开。这样的语法让Bash先解析 $file
变量,然后将其值传递给PHP命令。
请确保在实际使用前,$folderpath
已经被赋予了一个有效的路径值。如果路径中包含空格等特殊字符,这种方式也能正确处理。