Как передать аргумент скрипту, который вводится в bash

while IFS=: read a b c d e f;do 
    echo sqlplus -sl dbsnmp/Or8cle@\"$c:$d/$b\" 
done < aaa.log 
10
27.08.2016, 10:14
2 ответа

Я считаю, что вы ищете вариант -s . С помощью -s вы можете передавать аргументы сценарию.

В качестве фиктивного примера, чтобы проиллюстрировать это:

$ echo 'echo 1=$1' | bash -s -- Print
1=Print

Здесь вы можете видеть, что скрипту, предоставленному на stdin, задан позиционный параметр Print . Ваш скрипт принимает аргумент -u UUID , который также может быть адаптирован:

$ echo 'echo arguments=$*' | bash -s -- -u UUID print
arguments=-u UUID print

Итак, в вашем случае:

curl -fsSL http://git.io/vvZMn | bash -s -- print

Или,

curl -fsSL http://git.io/vvZMn | bash -s -- -u UUID print

Как указал Стивен Харрис, загрузка скрипта и его выполнение , невидимое зрение, является проблемой безопасности.

18
27.01.2020, 20:00

Если в вашей системе есть / dev / stdin , вы можете использовать

$ echo 'echo 1=$1' | bash /dev/stdin print
1=print

Do not do this:

$ echo 'echo 1=$1' | bash /dev/stdin -- print
1=--

Если вы хотите использовать - , сделайте следующее:

$ echo 'echo 1=$1' | bash -- /dev/stdin print
1=print
3
27.01.2020, 20:00

Теги

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