добрый деньнадо передать "составную" команду строкой
"исходный вариант команды" - закомментирован
с набегу/нагуглю не разобралсяпонимаю, что непонимаю глубинных смыслов башизма :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
>
> #!/bin/sh
> #///////////////////////////////////////////////////////////////////////////////
> bash-3.1.017-i486-2Пендель номер раз - для начала, определись, с чем ты все-таки работаешь - Bourne Shell (/sh) или Bourne Again Shell (/bash)
да ты баш-ковитый, разбираешься, видимо?! :о)
slackware
> да ты баш-ковитый, разбираешься, видимо?! :о)
> slackwareВДНЕ за слаку. Кто там на кого показывает, баш на борна или наоборот.
Но зато видел многих башковитых, пытавшихся борна рядить в башево полукафтанье...
ВДНЕ... хм... ВДНХ - знаю, а что такое ВДНЕ? может, На дне?п.с. ну уже достаточно померялись, давай перемирие... по теме?!
вообще-то уже б.м. прояснилось, но можно дополнить, или высказать свои мысли...
спасибо
ls -l /bin/sh
lrwxrwxrwx 1 root users 4 Sep 4 2015 /bin/sh -> bash*
>[оверквотинг удален]
> --title=$(echo Выбор$Xфайла) \
> "
> cmd
> exit 0
>
А в одинарный кавычках у тебя не сработает?
CMD='ls'
Если нужно вставлять значения переменных, то двойные кавычки. Если символы как есть, то одинарные.
возьми вместо ls - ту, исходную команду, кот. закоментирована... вот ее и передай... строкой ... :о)(простые команды - не проблема)
> возьми вместо ls - ту, исходную команду, кот. закоментирована... вот ее и
> передай... строкой ... :о)
> (простые команды - не проблема)Нафиг, я час убил. Пиши лучше команды как есть.
cmd()
{
eval $CMD
}Но лучше передавать параметры не через жопу, а в явном виде:
cmd(){ eval $* }
Потом вызывать какcmd $CMD
Я думаю, как-то так:
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_" - добавляем бекслеш.)
спасибо! уже давно подсказали, просто, для расширения вариантов ответов спросил и тут
п.с. массивыhttps://www.linux.org.ru/forum/development/15807363