bash, передача команды строкой, sunjob, 13-Июл-20, 11:07 [смотреть все]добрый деньнадо передать "составную" команду строкой "исходный вариант команды" - закомментирован с набегу/нагуглю не разобрался понимаю, что непонимаю глубинных смыслов башизма :o) буду благодарен за волшебные пендили, подсказки, ссылки, мымсли идеи (желательно, без особых извращений современного баша) спасибо #!/bin/sh #/////////////////////////////////////////////////////////////////////////////// cmd() #/////////////////////////////////////////////////////////////////////////////// { $CMD } #///////////////////////////////////////////////////////////////////////////////cd $TMP touch test_image.{iso,img,txt} # # исходный вариант # #zenity \ #--file-selection --save \ #--filename=dvd.iso \ #--file-filter="*.iso *.img" \ #--title="Выбор файла"; exit 1 X=$'\040' MASK="*.iso *.img" ; TITLE="Выбор файла" MASK="*.iso$X*.img" ; TITLE="Выбор$Xфайла"
CMD="\ zenity \ --file-selection --save \ --filename=dvd.iso \ --file-filter=*.iso\ *.img \ --title=Выбор\ файла \ " CMD="\ zenity \ --file-selection --save \ --filename=dvd.iso \ --file-filter=*.iso$X*.img \ --title=Выбор$Xфайла \ " CMD="\ zenity \ --file-selection --save \ --filename=dvd.iso \ --file-filter=$(echo *.iso$X*.img) \ --title=$(echo Выбор$Xфайла) \ " cmd exit 0
исходные
bash-3.1.017-i486-2 slackware 12.2
|
- bash, передача команды строкой, Аноним, 13:34 , 13-Июл-20 (1)
> > #!/bin/sh > #/////////////////////////////////////////////////////////////////////////////// > bash-3.1.017-i486-2 Пендель номер раз - для начала, определись, с чем ты все-таки работаешь - Bourne Shell (/sh) или Bourne Again Shell (/bash)
- bash, передача команды строкой, sunjob, 13:37 , 13-Июл-20 (2)
да ты баш-ковитый, разбираешься, видимо?! :о) slackware
- bash, передача команды строкой, Аноним, 15:28 , 13-Июл-20 (3)
> да ты баш-ковитый, разбираешься, видимо?! :о) > slackware ВДНЕ за слаку. Кто там на кого показывает, баш на борна или наоборот. Но зато видел многих башковитых, пытавшихся борна рядить в башево полукафтанье...
- bash, передача команды строкой, sunjob, 17:26 , 13-Июл-20 (4)
ВДНЕ... хм... ВДНХ - знаю, а что такое ВДНЕ? может, На дне?п.с. ну уже достаточно померялись, давай перемирие... по теме?! вообще-то уже б.м. прояснилось, но можно дополнить, или высказать свои мысли... спасибо ls -l /bin/sh lrwxrwxrwx 1 root users 4 Sep 4 2015 /bin/sh -> bash*
- bash, передача команды строкой, Павел Отредиез, 18:29 , 13-Июл-20 (5)
>[оверквотинг удален] > --title=$(echo Выбор$Xфайла) \ > " > cmd > exit 0 > > исходные > > bash-3.1.017-i486-2 > slackware 12.2 > А в одинарный кавычках у тебя не сработает? CMD='ls' Если нужно вставлять значения переменных, то двойные кавычки. Если символы как есть, то одинарные.
- bash, передача команды строкой, sunjob, 18:33 , 13-Июл-20 (6)
возьми вместо ls - ту, исходную команду, кот. закоментирована... вот ее и передай... строкой ... :о)(простые команды - не проблема)
- bash, передача команды строкой, Павел Отредиез, 17:31 , 15-Июл-20 (7)
> возьми вместо ls - ту, исходную команду, кот. закоментирована... вот ее и > передай... строкой ... :о) > (простые команды - не проблема) Нафиг, я час убил. Пиши лучше команды как есть.
- bash, передача команды строкой, ACCA, 18:42 , 15-Июл-20 (8)
cmd() { eval $CMD } Но лучше передавать параметры не через жопу, а в явном виде: cmd(){ eval $* } Потом вызывать как
cmd $CMD
- bash, передача команды строкой, Дмитрий Ю.Карпов, 02:54 , 22-Июл-20 (9)
Я думаю, как-то так:
CMD="zenity \ --file-selection --save \ --filename=dvd.iso \ --file-filter=\"*.iso *.img\" \ --title=Выбор\ файла \ "
Есть ещё такой вариант, причём я не уверен, что тут можно разбивать строку на несколько:
read CMD <<_END_ zenity --file-selection --save --filename=dvd.iso --file-filter="*.iso *.img" --title="Выбор файла" _END_
(Строка "_END_" указывается в начале и обозначает конец ввода. Внутри можно использовать переменные окружения и запускать программы через ё-апострофы или доллар-со-скобками. Если этого хочется избежать, и лень бекслешить - то вместо "<<_END_" пишем "<<\_END_" - добавляем бекслеш.)
|