LINUX.ORG.RU

BASH: передать весь ввод в скрипт в виде аргументов.

 , ,


0

2

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

например:

eix -S "ololo trololo"

передаётся без кавычек.

etc-update && emerge -pv =dev-python/python-exec-0.3.1

передаётся коряво, то есть действие скрипта заканчивается на амперсандах.

emerge -av portage gentoolkit layman eix gentoo-sources python ololo trololo и ещё много чего

передавать как? ведь слишком много аргументов.

в общем, нужно адекватное решение. быдлокодить на других языках не предлагать, я не стану их учить, это просто не моё.

//тег генты здесь потому, что, дядьки, вы же не бросите меня с этой фигнёй, правда? ^_^

Ответ на: комментарий от Kroz

тут дело не в сдался, а ниасилил.

проблемы не надуманные. дело в том, что всё это должно быть в базе скрипта.

суть скрипта проста до невозможности, она должна выполнять всего лишь:

su - -c $(всё -что "угодно" здесь)

sudo ненужно по ряду причин.

funeralismatic ★★★
() автор топика
Ответ на: комментарий от funeralismatic

тут дело не в сдался, а ниасилил.

Мне кажется, что тебе просто нужно начать делать. Если ты предвидишь проблемы - сделай сначала «модельные» участки. А там уже увидишь, есть нам проблемы на самом деле или нет.

она должна выполнять всего лишь:
su - -c $(всё -что «угодно» здесь)

Может я слишком мало спал эту неделю, но я все еще не могу понять что тебе нужно. Можешь дать конкретный пример, без 'всё -что «угодно» здесь', а с реальными данными (или близкими к ним)?

Вот еще:

$ vi script2.sh
#!/bin/sh
# Скрипт читает из stdin код и выполняет его

while read L ; do
        bash -c "$L"
done

$ chmod +x script2.sh
$ echo 'echo -n "Counting: "; for ((C=1;C<10;C++)) ; do echo -n "$C " ; done ; echo' | ./script2.sh
Counting: 1 2 3 4 5 6 7 8 9
$ ./script2.sh 
echo "It works"                                                     
It works
echo -n "Counting: "; for ((C=1;C<10;C++)) ; do echo -n "$C " ; done ; echo
Counting: 1 2 3 4 5 6 7 8 9
Ctrl+D

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от funeralismatic

su - -c $(всё -что «угодно» здесь)

Ну дык cat же. Я ж тебе написал. Что, не работает?

ziemin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.