Brace Expansion不工作bash

时间:2012-01-11 05:09:47

标签: linux bash shell brace-expansion

我正在尝试在bash脚本中使用大括号扩展,如下所示。

#!/bin/bash
document_root="/var/www/www.example.com"
`chmod -R g+w $document_root/{../captcha,../files}`

这给了我错误

  

chmod:无法访问`/var/www/www.example.com/{../captcha,../files}':否   这样的文件或目录

但是当我在终端中运行它时它工作得很好。

3 个答案:

答案 0 :(得分:3)

#!/bin/bash
document_root="/var/www/www.example.com"
chmod -R g+w $document_root/{../captcha,../files}
  1. 当您分配给变量时,不要为变量添加前缀$,只有在展开时
  2. 你不需要chmod周围的反引号,这样做就把整个事情视为一个命令

答案 1 :(得分:1)

我自己偶然发现了这个问题。就我而言,我在脚本的某个位置使用了set -eu命令,从而导致了这个特殊问题。解决方法是添加-B之类的set -euB选项,以重新启用括号扩展功能,因为由于某种原因它已被禁用,尽管手动指出默认情况下已启用它。

答案 2 :(得分:0)

你试过这种方式吗?

#!/bin/bash
document_root="/var/www/www.example.com"
chmod -R g+w $document_root/{"../captcha","../files"}