Передача аргументов в сценарий bash из git с помощью curl

init=/bin/bash rw

А этот "рв", что он там делает? Не будет ли это воспринято как аргумент в пользу bash? Сначала монтируется root, затем можно запускать /bin/bash.

0
30.11.2020, 16:04
3 ответа
curl -Ls <git-script-path> | bash -s -- -p admin

Это заставляет bashсчитывать команды оболочки из своего стандартного потока ввода, который подключен к curl. -pи admin— это два аргумента, которые будут доступны как позиционные параметры в скрипте. --необходим, чтобы сигнализировать об окончании опций для исполняемого файла bash.

Тестирование с помощью однострочного -скрипта в script.sh, который только выполняет printf '"%s"\n' "$@"(, выводит аргументы командной строки в кавычках на отдельных строках ). Мы позволим cat script.shстать опорой -для вашей curlкоманды:

$ cat script.sh| bash -s -- -p admin
"-p"
"admin"

Если ваш скрипт требует интерактивности, вы не сможете прочитать сам скрипт из стандартного ввода. Вместо этого укажите сценарий через имя файла:

$ bash <( curl -Ls <git-script-path> ) -p admin

Это как раз то, что вы имеете в своем вопросе. Обратите внимание, что для этого требуется, чтобы текущая оболочка понимала замены процессов с помощью <(... ).

0
18.03.2021, 22:46

Это можно сделать отдельными шагами. Сначала получите скрипт и поместите его в файл:

curl -sL https://...git > script.sh 

Сделать его исполняемым:

chmod +x script.sh

И выполнить с параметрами:

./script.sh -p admin

Как анлайнер:

curl -sL https://...git > script.sh && chmod +x script.sh &&./script.sh -p admin

Если вы не хотите хранить скрипт постоянно, вы можете

tmpFile=$(mktemp) && curl -sL https://...git > $tmpFile && chmod +x $tmpFile && $tmpFile -p admin && rm $tmpFile
0
18.03.2021, 22:46

Если вы хотите передать скрипту аргументы, просто добавьте их в командную строку:

bash <(curl -Ls <git-script-path>) -p admin

Пример с командой для отображения только аргументов:

$ bash <(echo 'echo args: "$@"') -p admin
args: -p admin
0
18.03.2021, 22:46

Теги

Похожие вопросы