unix 从XAMPP运行shell脚本时,在意外标记“(”附近出现错误

kfgdxczn  于 2023-10-18  发布在  Unix
关注(0)|答案(1)|浏览(173)

我尝试使用exec函数直接从index.php发送shell命令,如下所示:

exec('shopt -s extglob && cd /opt/lampp/htdocs/testes/xml/ && rm !(*.xml)');

但是,xampp在日志中返回一个错误:

sh: -c: line 1: syntax error near unexpected token `('
sh: -c: line 1: `rm !(*.xml)'

我已经允许xampp通过exec向机器发送命令。其他命令(如仅删除不符合!()条件的文件)也可以正常工作。
当我直接通过Linux终端写rm !(*.xml)时工作正常。

gr8qqesn

gr8qqesn1#

错误信息为**sh:**...
shopt -s extglob和extended globbing是bash的扩展。
exec函数似乎使用了POSIX shell,而不是bash,所以不能直接使用bash特定的代码。
尝试这样说

exec('bash -c "shopt -s extglob && cd /opt/lampp/htdocs/testes/xml/ && rm !(*.xml)"');

或者更好的方法是将代码放入带有解释器规范的bash脚本文件中

#!/bin/bash

和使用

exec('/path/to/your_script');

相关问题