sh脚本逃脱

时间:2012-12-15 05:06:42

标签: linux sh

从linux终端发出命令:

 ls application/js/{a*,b*,c*,d*,e.pocket-secure}

将列出application / js目录中以a,b,c,d或e.pocket-secure开头的所有文件。

如果我将该命令放在doit.sh中并执行:

sh doit.sh

我明白了:

ls: cannot access application/js/{a*,b*,c*,d*,e.pocket-secure*}: No such file or directory

我认为{}让shell解释器感到困惑,但我尝试引用(single | double)并尝试转义{}无效。

2 个答案:

答案 0 :(得分:2)

当您在终端中输入时,我怀疑您在bash。当您运行sh doit.sh时,您正在更改shell的特征,因为bash处于兼容模式,或者因为您使用的是dash。尝试bash doit.sh

答案 1 :(得分:1)

这种语法只适用于bash解释器,你可以试试这个

#/bin/bash
ls application/js/{a*,b*,c*,d*,e.pocket-secure}

chmod +x doit.sh
./doit.sh

OR

只需在shell上输入

即可
bash doit.sh