0
我試圖僞造一個sudo的程序,需要真正的超級用戶口令:假sudo的腳本無法正常運行
#!/bin/sh
su -c "'$*'"
它,當我做
sudo yum
但是當我做
不起作用工程sudo yum upgrade
或任何有參數的命令。 Bash抱怨
bash: yum upgrade command not found
爲什麼會發生這種情況?
我試圖僞造一個sudo的程序,需要真正的超級用戶口令:假sudo的腳本無法正常運行
#!/bin/sh
su -c "'$*'"
它,當我做
sudo yum
但是當我做
不起作用工程sudo yum upgrade
或任何有參數的命令。 Bash抱怨
bash: yum upgrade command not found
爲什麼會發生這種情況?
您引用不正確。這是您實際上想要"$*"
而不是"[email protected]"
的罕見情況。但你絕對不想"'$*'"
$ @和$ *有什麼區別?爲什麼不能添加單引號?因爲我總是做** su -c'yum升級'** – texasbruce 2015-03-19 07:07:54
使用$ @會給出不同的單詞,所以如果你用參數'yum upgrade'調用sript,'su -c「$ @」'相當於'sudo -c「yum」「upgrade」',但'su -c「$ *」'與'su -c「yum upgrade」'相同。如果使用單引號,則相當於'su -c''yum upgrade'「',因此不是使用參數'upgrade'運行命令」yum「,su會查找名爲'yum upgrade'的命令並且找不到它。 – 2015-03-19 07:11:05
感謝您的解釋!有時候殼牌有點混淆...... – texasbruce 2015-03-19 07:15:06