Ugn*_*nes -4 permissions shell-script cat kali-linux
我写了以下脚本
#!/bin/bash
echo "Power Details"
fall='/sys/class/power_supply/BAT1'
full=cat $fall/energy_full
echo 'printing here'
echo $full
Run Code Online (Sandbox Code Playgroud)
它显示以下错误:
./power.sh: line 4: /sys/class/power_supply/BAT1/energy_full: Permission denied
Run Code Online (Sandbox Code Playgroud)
我正在访问的文件对所有人都具有读取权限。另外,虽然我只是打印文件的输出,例如(编辑代码的第 4 行):
cat $path/energy_full
Run Code Online (Sandbox Code Playgroud)
它没有显示错误。为什么会这样?如何为cat filename
V / Svar1 = cat filename
有什么不同?在不更改要访问的文件的读写执行权限的情况下,我应该如何解决该问题?
注意:我以 root 用户身份运行 Kali Linux
问题是您使用错误的语法将命令的输出分配给变量。
要回答你的问题问的,之间的区别cat filename
,并var=cat filename
是,在第一种情况下,你正在执行的命令cat
上filename
。在第二个,您正在执行的命令filename
而设定的值var
来cat
。但是,filename
不是可执行命令,因此您会收到权限错误。
由于您实际上想将cat
命令的输出分配给一个变量,您需要这样做:
var=$(cat filename)
Run Code Online (Sandbox Code Playgroud)