簡體   English   中英

將進程替換結果作為腳本執行

[英]Executing process substitution result as a script

我想創建一個臨時的 shell 腳本,並將它作為參數傳遞給另一個腳本,即回調鈎子。 是否可以為此使用流程替換?

在這個例子中, aria2c允許一個鈎子作為參數。 下載頁面后,aria2c 將使用一些參數調用該鈎子。 理想情況下,我希望 aria2c 調用我的“虛擬”腳本,而不先制作任何臨時文件,如下所示:

aria2c \
  --on-download-complete <(echo '#!/bin/sh'; echo 'echo "Called with [$1] [$2] [$3]"') \
  https://aria2.github.io/

但結果我收到一個許可錯誤:

Could not execute user command: /dev/fd/63: Permission denied

正如評論中指出的那樣, aria2c期望鈎子參數是作為回調執行的程序文件名 然而,進程替換產生的文件名不是這樣的程序; 進程替換返回命名管道文件名

如果不創建任何文件,您就無法做您想做的事。 但是,單個靜態幫助程序和導出的 bash 函數接近:

/my/odc/helper

#!/bin/bash
__aria2c_odc_helper_function "$@"
exit

用作類似的東西:

__aria2c_odc_helper_function(){
    echo "Called with [$1] [$2] [$3]"
}
export -f __aria2c_odc_helper_function

aria2c --on-download-complete /my/odc/helper \
    https://aria2.github.io/

暫無
暫無

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

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