簡體   English   中英

如何從終端在bash管道中傳遞參數

[英]How to pass argument in bash pipe from terminal

我在名為test.sh的文件中顯示了bash腳本

#!/usr/bin/env bash
echo $1
echo "execution done"

當我使用執行腳本時

情況1

./test.sh "started"

    started
    execution done

正常顯示

案例2

如果我執行

bash test.sh "started"

我正在把輸出

開始了

執行完成

但是我想使用帶有參數的cat或wget命令來執行此操作,例如:

Q1

cat test.sh | bash

或使用命令

Q2

wget -qO-“ URL包含bash” | bash

所以在第一季度和第二季度我該如何傳遞參數

與此類似的東西在這個github中顯示

https://github.com/creationix/nvm

請參考安裝腳本

您無需通過管道進行bash; bash在您的終端中按標准運行。

如果我有一個腳本並且必須使用cat,這就是我要做的:

cat script.sh > file.sh; chmod 755 file.sh; ./file.sh arg1 arg2 arg3

script.sh是源腳本。 您可以將其替換為任何所需的呼叫。

但是,這有安全隱患。 只需在shell中運行任意代碼-尤其是在wget中,代碼來自遠程位置。

$ bash <(curl -Ls url_contains_bash_script) arg1 arg2

說明:

$ echo -e 'echo "$1"\necho "done"' >test.sh
$ cat test.sh
echo "$1"
echo "done"
$ bash <(cat test.sh) "hello"
hello
done
$ bash <(echo -e 'echo "$1"\necho "done"') "hello"
hello
done

暫無
暫無

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

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