0

我有一个脚本,它使用 find 并chgrp/chmod在指定的目录上递归设置某些权限和组$1

要提取此目标目录的组,我使用

mygrp = ${stat -c %G $mydir}

但是在 下执行bash,这会产生错误:

${stat -c %G $mydir}: bad substitution

简单地运行命令

stat -c %G $mydir

正确提取组,我似乎无法将其放入mygrp变量中。

4

4 回答 4

0

${...}$(...).

mygrp=$(stat -c %G "$mydir")

请注意,周围=不允许有空格。

于 2016-05-12T14:51:03.817 回答
0

${ }进行变量扩展。

对于命令替换,您应该使用$()

mygrp=$(stat -c %G $mydir) 
于 2016-05-12T14:51:35.277 回答
0

将 ${ } 替换为 $( ) 并删除等号周围的空格。

$() 用于命令替换。

mygrp=$(stat -c %G $mydir)
于 2016-05-12T14:52:11.033 回答
0

你应该一直在做

$(stat -c %G "$mydir") 

代替

${stat -c %G $mydir}

$mydir鉴于目录名称可能是非标准的,你应该加上双引号,比如它们包含换行符。如果这条线是

   $(stat -c %G $mydir) 

然后 :

$ ./your_script_name "dir
37190290"

会失败:

stat: cannot stat `dir': No such file or directory
stat: cannot stat `37190290': No such file or directory
于 2016-05-12T14:52:18.520 回答