LINUX.ORG.RU

Значение символа &.

 


0

1

Bash интерпретирует символ & как оператор. Как и можно ли временно отключить (на время выполнения одной комманды) значение символа & как оператора, не экранировав его или что бы он экранировался автоматически?



Последнее исправление: unclear (всего исправлений: 1)

a1ba@gentoohome ~ $ echo &
[1] 3021

a1ba@gentoohome ~ $ echo \&
&
[1]+  Done                    echo
a1ba@gentoohome ~ $ echo "&"
&

ты об этом? Для одной команды можешь просто кавычки поставить, может это нужно.

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

Нет.

значение символа & как оператора, не экранировав его или что бы он экранировался автоматически?

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

Нельзя, насколько я понимаю. А зовется эта группа операторов — control operator, может чего нагуглишь по этому поводу.

a1batross ★★★★★
()

А зовется эта группа операторов — control operator, может чего нагуглишь по этому поводу.

Не гуглится.

man bash

Читал, ничего не нашел по данному вопросу.

unclear
() автор топика

Это теоретический вопрос или ты просто делаешь что-то неправильно?

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

Читал, ничего не нашел по данному вопросу.

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

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

Чтоб я сдох если из вопроса не следует именно такой ответ...

I-Love-Microsoft ★★★★★
()

Как и можно ли временно отключить (на время выполнения одной комманды) значение символа & как оператора, не экранировав его или что бы он экранировался автоматически?

нет.

Bash плевать хотел на твои хотелки. Единственное что можно, так это менять разделитель термов(IFS).

emulek
()

Часть языка же, а еще можно захотеть, чтобы "(" временно интерпретировалось как строка, а не запуск «subshell», разумная хотелка?

В любом случае, оператор & появляется в явном виде - либо задан вручную (тогда несложно экранировать), либо eval - тогда ссзб. Если команда простая (безпробельные аргументы), можно: cmd="... & ..."; ${cmd[@]} (+ в zsh есть ${(z)...} )

anonymous
()

Это теоретический вопрос или ты просто делаешь что-то неправильно?

Наверное что-то неправильно, но как я понял придеться писать отдельный скрипт для wget, curl и т.п. в котором будет команда и экранированный «selection с ссылкой», т.к. некоторые url содержат &, а экранировать каждый раз вручную неохота.

Часть языка же, а еще можно захотеть, чтобы "(" временно интерпретировалось как строка, а не запуск «subshell», разумная хотелка?

Надеялся что может есть переменная наподобие IFS или скрытые возможности вроде # bash --exclude "&" и я что-то упустил, но увы, похоже это не так.

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

не страдай ерундой: $ wget "emulek.ignorelist.com/forum/viewtopic.php?f=1&t=1873&p=19442" УМВР $ URL="emulek.ignorelist.com/forum/viewtopic.php?f=1&t=1873&p=19442" $ wget $URL УМВР

emulek
()
Ответ на: комментарий от KennyMinigun

Пример: есть ссылки на youtube с символом &, хочу вставлять ссылки в терминал как аргумент для youtube-dl, не тратя время на экранирование ссылки, что бы команда такого вида:

youtube-dl http://youtube.com/&..&

работала. Пока что придумал только написать отдельный скрипт вида:
youtube-dl `xclip -o`

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

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

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

$ read -p'введите урл:'
введите урл:emulek.ignorelist.com/forum/viewtopic.php?f=1&t=1873&p=19442
$ echo $REPLY 
emulek.ignorelist.com/forum/viewtopic.php?f=1&t=1873&p=19442

emulek
()
Ответ на: комментарий от unclear

Задать переменную проще чем взять ссылку сразу из selection'а?

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

emulek
()
Ответ на: комментарий от unclear

Хм, конечно поставить две кавычки тут не особо сложно. ТОгда вот еще один костыльчик

alias=iyoutube-dl='youtube-dl $(read e; echo $e)'

iyoutube-dl # no args
<paste><enter>
# profit

KennyMinigun ★★★★★
()

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

Дальше в теме писал про selection.

Хм, конечно поставить две кавычки тут не особо сложно. ТОгда вот еще один костыльчик

Ну понятно что не особо сложно, но когда часто вставляешь ссылки в терминал хочется ускорить этот процесс. Спасибо за костыль, буду пробовать что-нибудь с одним нажатием ^M написать.

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

Привычка.

угу. У меня тоже. Кавычки здесь не мешают. И помогают, т.к. хотя всякие & и $ не работают внутри переменных, но вот как раз пробелы(и прочее $IFS) как раз работает. Т.е. если в $X лежит x y z, то $X это три параметра, а вот "$X" — один.

emulek
()
Ответ на: комментарий от unclear

но когда часто вставляешь ссылки в терминал хочется ускорить этот процесс

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

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