[英]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.