0 bash shell-script command-substitution variable
我正在学习 shell 脚本,我正在编写一个脚本,其中列出了用户具有“7”权限的文件,即“rwx”。到目前为止,我已经写了这个:
for F in *
do
a= $(stat -c "%a" "$F")
echo $a
if ((b==7))
then
echo $F
fi
done
Run Code Online (Sandbox Code Playgroud)
这里a的值为“1”。我在这里做错了什么?
在 shell 中,空格很重要。代替
a= $(stat -c "%a" "$F")
Run Code Online (Sandbox Code Playgroud)
和:
a=$(stat -c "%a" -- "$F")
Run Code Online (Sandbox Code Playgroud)
(还添加了--
选项分隔符,因此该命令仍然适用于以 开头的文件名-
)
或者
a=$(stat -Lc "%a" -- "$F")
Run Code Online (Sandbox Code Playgroud)
如果对于符号链接,您需要符号链接目标的权限(因为在大多数系统上,符号链接本身的权限并不相关)。
为简单起见,让我们stat
在单个文件上运行该命令,然后在交互式命令行中执行此操作:
$ stat -c "%a" file
660
Run Code Online (Sandbox Code Playgroud)
现在,让我们尝试使用空格命令:
$ a= $(stat -c "%a" file)
bash: 660: command not found
$ echo a=$a
a=
Run Code Online (Sandbox Code Playgroud)
我们收到一条错误消息并且a
未设置为新值。(如果在您的情况下,a
之前已分配给1
,则它将保持不变1
。)现在尝试不使用空格:
$ a=$(stat -c "%a" file)
$ echo a=$a
a=660
Run Code Online (Sandbox Code Playgroud)
这有效。 a
成功设置为stat
命令返回的数字。
归档时间: |
|
查看次数: |
63 次 |
最近记录: |