linux - 将 stat 命令输出分配给变量时的错误替换

标签 linux bash command-substitution

我有一个脚本,它使用 find 和 chgrp/chmod 递归地设置某些权限并在 $1

中指定的目录上进行分组

为了提取这个目标目录的组,我使用

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

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

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

简单地运行命令

stat -c %G $mydir

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

最佳答案

你应该一直在做

$(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

关于linux - 将 stat 命令输出分配给变量时的错误替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37190290/

相关文章:

linux - 将 ls 命令的输出存储在 shell 变量中

bash - 我可以在多行命令中使用 $( ... ) 语法吗?

linux - 要求用户输入文件然后修改该文件的 Bash Shell 脚本

c - 使用 strcpy 的 64 位缓冲区溢出

bash - 在 bash 中将 kB 和 GB 转换为 MB

linux - 如何在 linux 中使用 xmlstarlet 从 xml 中获取值

Bash 脚本 : Encoding string to base64 into a variable

regex - Grep 搜索特定字符问题

c++ - 我如何告诉 GCC 为 -l 使用自定义库而不是系统库?

node.js - 如何将 'find' 的输出通过管道传输到一个命令中,该命令将执行通过管道传输到 package.json 上两个目录上的 'more' 的 'grep' ?