Комментирование строки, но не '#' (Вставить комментарий посреди)
Модераторы: /dev/random, Модераторы разделов
Комментирование строки, но не '#'
Как можно вставить комментарий отлично от #?
Спрашиваю с тем: чтобы коммент был посреди скрипта -- то есть чтобы после него скрипт можно было дописать.
Спрашиваю с тем: чтобы коммент был посреди скрипта -- то есть чтобы после него скрипт можно было дописать.
Сергей Ш. » DragonSerW.RU
Re: Комментирование строки, но не '#'
Так, Вы, и так скрипт допишите.
# - строка не будет обрабатываться, а все остальные строки будут.
Такой примитивный скрипт, но принципы можно применить и в более сложных.
# - строка не будет обрабатываться, а все остальные строки будут.
Добавлено (11:19):
Код: Выделить всё
#!/bin/sh
sleep 6 && xterm&
#sleep 6 && xfce4-terminal
sleep 7 && gedit&
#sleep 4
Re: Комментирование строки, но не '#'
igor@igor
Kopilov
Да, ребят, я по поводу однострочных скриптов в командной строке -- это bash называется?
Kopilov
Да, ребят, я по поводу однострочных скриптов в командной строке -- это bash называется?
Сергей Ш. » DragonSerW.RU
Re: Комментирование строки, но не '#'
В общем случае, это будет POSIX Shell. В большинстве случаев (но не всегда) — Bash, как его самое популярное надмножество.
Блочных комментариев в чистом виде, насколько мне известно, нет ни там, ни там.
Для Bash (но не для переносимого POSIX Shell, так что в production open source использовать не стоит) нашёл такой workaround:
echo "123`#This is commented`456" — выводит 123456
Блочных комментариев в чистом виде, насколько мне известно, нет ни там, ни там.
Для Bash (но не для переносимого POSIX Shell, так что в production open source использовать не стоит) нашёл такой workaround:
echo "123`#This is commented`456" — выводит 123456
Спасибо сказали:
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Комментирование строки, но не '#'
А зачем в однострочнике комментарий? Однострочники пишут ради краткости. А для читаемости пишут нормальные многострочные скрипты.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Комментирование строки, но не '#'
Потому что он у меня очень длинный -- там ставится весь мой набор ПО.
Сергей Ш. » DragonSerW.RU
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Комментирование строки, но не '#'
Да по идее, в любом POSIX-совместимом шелле должно работать. Хоть и извращение, конечно.
Добавлено (13:36):
А не надо писать длинные однострочники. И, в любом случае, зачем там комментарий? Для поиска по истории? Поиск будет работать и в том случае, когда комментарий в конце строки.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Комментирование строки, но не '#'
Вроде, когда-то обсуждалось, что использование кавычек для внедрения вывода — башизм. А с $() этот способ не работает.Bizdelnick писал: ↑03.01.2021 13:34Да по идее, в любом POSIX-совместимом шелле должно работать. Хоть и извращение, конечно.
Собственно, найдено тут: товарищ утверждает, что
According to Posix (Shell&Utilities, §2.6.3), "`echo a #`" is undefined (implying that it should not be used)
Добавлено (14:50):
Как вариант, если этот набор ПО ставится в Docker — чтобы снизить количество слоёв, не вынося скрипт в отдельный файл. (Сужу по опыту коллег, которые с такими однострочниками боролись, в различных смыслах, в том числе в контексте службы ИБ заказчика, которая умудрялась найти что-то лишнее в образе)
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Комментирование строки, но не '#'
Ничего подобного. Оба варианта есть в стандарте, обратные кавычки даже более переносимы (например, только они поддерживались в jsh, не к ночи будь помянут).
Добавлено (15:06):
Ну это, в принципе, так, но во всех шеллах, до которых я дотянулся, работает одинаково (кроме zsh, но он не претендует и на POSIX-совместимость).
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: Комментирование строки, но не '#'
Два раза прочла комментарии, но суть все равно не ясна. А вдруг угадаю или наведу на мысль:
А в многострочном скрипте использование heredoc с пустой командой еще проще
Shell
echo $(: <<\SPRAVKA
> one
> two
> three
> SPRAVKA
> ) 123
123
Добавлено (16:34):
Shell
echo $(: "комментарий") 123
123
Re: Комментирование строки, но не '#'
Тогда уж сразу:
В место двоеточия можно использовать true, но это будет путать.
Но все это как правило замедляет работу скрипта по сравнению с обычными комментариями ##.
Shell
: comment ; echo Hello
Shell
for x in 1 2; do : this is a comment; echo ${x};done
Но все это как правило замедляет работу скрипта по сравнению с обычными комментариями ##.
Спасибо сказали:
Re: Комментирование строки, но не '#'
false в некоторых вариантах подойдет, а вместо точки с запятой из верхнего примера можно использовать "или" "и"
Shell
: comment && echo hello
Shell
false comment || echo hello
Shell
var=1,2,3,4
echo ${${var%,*}##*,}
3
В баше приходится делать следующее:
Shell
: ${var%,*} && echo ${_##*,}
Добавлено (23:29):
Ну да. Проверила оболочку zsh на трех вложениях. Работает:Shell
var=1,2,3,4
echo ${var%,*}
1,2,3
echo ${${var%,*}#*,}
2,3
echo ${${${var%,*}#*,}%,*}
2
Добавлено (23:38):
Вот так на баше выглядит трехходовка:Shell
: ${var%,*} && : ${_#*,} && echo ${_%,*}
2
Добавлено (23:41):
Можно даже перезаписать переменную:Shell
: ${var%,*} && : ${_#*,} && var=${_%,*}
Re: Комментирование строки, но не '#'
По-моему, делать что-либо серьёзное на sh — мазохизм какой-то. Костыль на костыле Ещё и плохая совместимость
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Комментирование строки, но не '#'
Это нельзя вставить в произвольное место строки, например, между аргументами команды.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Комментирование строки, но не '#'
Совместимость-то как раз лучше всего, если умеючи писать. В любом юниксе заработает, независимо от установленного софта.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Комментирование строки, но не '#'
Да как бы в курсе, но какой смысл ставить комментарий между аргументами команды, либо в аргументе команды. Разве только чтобы себя запутать.Bizdelnick писал: ↑04.01.2021 01:38Это нельзя вставить в произвольное место строки, например, между аргументами команды.
Это из оперы - выстрели себе в ногу, хотя хозяин барин.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Комментирование строки, но не '#'
ТС зато может быть не в курсе.
Если это команда установки, то, например, чтобы пояснить, для чего какой пакет нужен. Но вообще ТСу лучше знать, зачем ему такие странные вещи понадобились. Если там несколько команд, то какой смысл утрамбовывать их в однострок?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Комментирование строки, но не '#'
Bizdelnick
Вот -- дабы не быть голословным -- список команд: https://serw.su/fedora.
Как видно, он до крайности обширен, и поэтому необходимы внутренние комментарии )
Вот -- дабы не быть голословным -- список команд: https://serw.su/fedora.
Как видно, он до крайности обширен, и поэтому необходимы внутренние комментарии )
Сергей Ш. » DragonSerW.RU
Re: Комментирование строки, но не '#'
Эх, не понять мне ваших извращений ))
Почему нельзя было сделать все это скриптом, и запускать его уже через sudo, как результат, можно было избавиться от множества вызовов sudo.
Так же можно было сделать его с параметрами, для выбора типа установки(варианта), а описание сделать по параметру -help. Конечно тут будут проблемы с восприятием. Но вы же делали для себя, вам и расхлёбывать
Re: Комментирование строки, но не '#'
Там множественный вызов sudo компенсируется вызовомперед исполнением скрипточка : ))
Shell
sudo -i
или
su -
Сергей Ш. » DragonSerW.RU
Re: Комментирование строки, но не '#'
Я вообще против хранения скриптов, которым нужен рут - в каталогах пользователя. Лучше всего их хранить в каталогах рута, что бы ни кто не подправил, а права на выполнение под рутом можно прописать в /etc/sudoers. Тогда совсем просто получается и можно даже прикрутить к нему какой нибудь гуй, например zenity или yad.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Комментирование строки, но не '#'
Что это? Вы с какого потолка эти команды брали?SerW писал: ↑04.01.2021 15:46Вот -- дабы не быть голословным -- список команд: https://serw.su/fedora.
В чём смысл этого всего?Код: Выделить всё
dnf update --refresh -y sudo -i sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm --nogpgcheck
Если речь об этом:
то зачем Вам всё это пихать в однострок? Сколько комментариев ни вставляйте, читаемым это не станет. Либо напишите нормальный скрипт, либо (лучше) автоматизируйте установку специально предназначенным для этого инструментом (kickstart, ansible, …).sudo dnf update -y && sudo dnf install aspell-ru ffmpeg gnome-disk-utility gnome-font-viewer gstreamer1-libav gpart gstreamer1-plugins-bad-freeworld gstreamer-ffmpeg gstreamer1-plugins-ugly gvfs gvfs-smb hunspell-ru hyphen-ru livecd-tools mythes-ru p7zip PackageKit-gstreamer-plugin libreoffice-langpack-ru python-mutagen sshfs simple-scan tree youtube-dl -y && sudo dnf install chromium firefox lshw-gui mozilla-ublock-origin mozplugger seahorse WoeUSB xsensors -y && sudo dnf install aisleriot gnome-chess midori pdfmod -y && sudo dnf install avidemux brasero evince fbreader filezilla gimp gnome-commander gnome-mahjongg goldendict gthumb inkscape nfoview telegram-desktop vlc -y && sudo dnf install deluge xonotic -y #&& sudo dnf install librecad openscad openshot scribus steam -y
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Комментирование строки, но не '#'
Ну, да, умеючи-то на всём зайдёт.
Только смотрю я на autotools — что-то это умение, которое нынче уже и не слишком востребовано, дорого даётся