LINUX.ORG.RU

Передача параметра в скрипт при непростых условиях


0

1

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

«Параметр=значение /путь/до/скрипта.sh», или, на самый уж пожарный случай, «export Параметр=значение /путь/до/скрипта.sh», чтобы переменная распространилась во все дочерние процессы.

Но скрипт, который запускается, запускается хитрым образом (через симулятор нажатия клавиш. Знаю, что звучит диковато, но так, к сожалению, надо). То есть цепочка выглядит так:

«команда симулятору сымитировать комбинацию клавиш» -> «запущенный этой комбинацией процесс».

При такой ситуации, к сожалению, наследование рвётся, и параметр до своей цели не доходит (проверено). Стало быть, мне нужно запустить какую-то «переменную среды», которую мог бы посмотреть мой скрипт безо всякого наследования. Писать данные на диск - не вариант.

Подскажите, пожалуйста, пути решения. Спасибо за внимание.

★★★★★

Есть некоторый параметр, который я хочу отправить в bash-скрипт. Если бы это была, так сказать, классика, то я бы, естественно, написал бы что-то вроде «Параметр=значение /путь/до/скрипта.sh»

OMG! Это где ты такое вычитал?

$ cd ~/bin
$ vi myscript.sh
#!/bin/sh
echo "This is $1"
:wq
$ chmod +x myscript.sh
$ ./myscript.sh cool
This is cool

Я не до конца понял как ты делаешь, но, очевидно, в твоем варианте это будет что-то типа «команда симулятору сымитировать комбинацию клавиш» -> «/home/piyavking/bin/myscript.sh cool».

Kroz ★★★★★
()

Преобразовать

«команда симулятору сымитировать комбинацию клавиш» -> «запущенный этой комбинацией процесс»

в

«команда симулятору сымитировать комбинацию клавиш» -> «bash -c 'VAR=blahblah запущенный этой комбинацией процесс'»

?

Ну или $1, как уже выше посоветовали, да.

strangeman ★★★★
()
Последнее исправление: strangeman (всего исправлений: 1)
$ mkfifo test
$ cat src.sh
#!/bin/sh
while true
do
        sleep 1
        echo "Test" >> test
done
$ cat dst.sh
#!/bin/sh
while true
do
        read a < test
        echo "$a"
done
$ sh dst.sh
Test
Test
Test
Test
Test
^C
#В другой консоли
$ sh src.sh
ziemin ★★
()

яничегонепонял, но всё равно предложу посмотреть на FIFO, как нечто среднее между файлами на диске и какой-то частью, которая не умеет переменные/аргументы.

и.. если моя сонная телепатия работает, то у тебя процесс, запускаемый кем-то, кто услышал эту комбинацию не получает аргументы. я правильно понял?

и вообще, что у тебя есть? есть скрипт, который надо выполнить по какой-то команде, в который ты пытаешься передать аргумент, но он где-то теряется (видел такое когда-то давно в каких-то ДЕ)? или же у тебя есть демон, к которому ты пытаешься что-то передать?

более того, если есть подозрение, что «цепь рвётся», то почему бы не выяснить, где именно рвётся?

ну и в конце концов: Вы уверены, что исключили возможность более простой реализации Вашей задачи?

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