簡體   English   中英

bash:當$ 0是進程重定向的結果時,執行

[英]bash: Executing $0 when it is the result of a process redirection

在GitHub上有一個腳本該腳本通常由於流程重定向而執行,如下所示:

sh <(curl -sSL http://git.io/sinister)

如果腳本不是從Windows運行的,則腳本本身可能需要root特權,因此,我添加了以下代碼行,以便在需要時以root身份重新執行自身:

on_windows()
{
    uname | grep -q '[CYGWIN|MINGW|MSYS]'
}

if ! on_windows && [ "$USER" != 'root' ]; then
    exec sudo "$0"
fi

但是,這似乎在進程重定向方面無法正常工作。 運行sh -x導致以下結果:

(trusty)james@localhost:~$ sh -x <(curl -sSL http://git.io/sinister)
+ set -e
+ ...
+ on_windows
+ grep -q [CYGWIN|MINGW|MSYS]
+ uname
+ [ james != root ]
+ exec sudo /dev/fd/63
sudo: /dev/fd/63: command not found

為什么會發生這種情況,我該如何解決?

您可能需要檢查以下答案: https : //unix.stackexchange.com/a/156088

您可以嘗試以下操作:將curl命令的結果存儲在一個臨時文件中並執行該文件。 像這樣:

curl -sSL http://git.io/sinister > file.temp
chmod u+x file.temp
./file.temp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM