Shell-Script
簡單貓和重定向到變數之間的區別
我寫了以下腳本
#!/bin/bash echo "Power Details" fall='/sys/class/power_supply/BAT1' full=cat $fall/energy_full echo 'printing here' echo $full
它顯示以下錯誤:
./power.sh: line 4: /sys/class/power_supply/BAT1/energy_full: Permission denied
我正在訪問的文件對所有人都有讀取權限。此外,雖然我只是列印文件的輸出,例如(編輯程式碼的第 4 行):
cat $path/energy_full
它顯示沒有錯誤。為什麼會這樣?
cat filename
v/s有var1 = cat filename
什麼不同?在不更改我要訪問的文件的讀寫執行權限的情況下,我應該怎麼做才能解決這個問題?注意:我以 root 使用者身份執行 Kali Linux
問題是您使用錯誤的語法將命令的輸出分配給變數。
要按要求回答您的問題, 和 之間的區別在於
cat filename
,var=cat filename
在第一種情況下,您正在執行命令cat
onfilename
。在第二種情況下,您正在執行命令filename
,同時將 的值設置var
為cat
。但是,filename
它不是可執行命令,因此您會收到權限錯誤。由於您實際上想將
cat
命令的輸出分配給變數,因此您需要這樣做:var=$(cat filename)