需要脚本帮助,在命令行上运行,但不在脚本中运行

需要脚本帮助,在命令行上运行,但不在脚本中运行

所以如果我在命令行上运行它,我会运行以下命令,但会在 bash 脚本中给出此错误:

sudo -u $usr rm -rf "${htmldir}"/!("awstatsicons"|"awstats-icon"|"icon"|"roundcube"|"phpmyadmin"|"stats"|"htusers")

请注意,在 bash 脚本中,我在上面的行中指定了:“shopt -s extglob”。如果我在命令行上添加 usr 和 htmldir 变量,设置“shopt -s extglob”并准确复制该行,那么它就会按预期运行。但是从脚本运行它,会出现以下错误:

syntax error near unexpected token `('

我尝试了一些排列,但效果不佳。任何帮助,将不胜感激

答案1

您需要使 shell 具有交互性并用于history -p解释!人物:

#!/bin/bash -i
eval $(history -p <your statement involving ! expansion>)

在调用shell脚本之前,需要保存历史记录:

history -a

例子:

cat jt
#!/bin/bash -i
eval `history -p !df`

df /; history -a
./jt

答案2

好的,基本上我已经发布了我的问题的一个片段。然而,@alecxs 是对的。我一定有一些带有隐藏字符的东西,或者是“空白”,导致了问题。我进去删除了所有“空”行,确保每行最后一个可见字符之后的所有内容都被删除。然后运行脚本,一切正常。再次感谢@alecxs

相关内容