LINUX.ORG.RU

bash if


0

1

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

но не могу понять что ему от меня надо

скриптик

#!/bin/sh while true; do sDate="$(date +%H):$(date +%M)"; if [$sDate = "15:50"]; then echo "запуск"; sleep 60; fi sleep 1; done

пишет [15:47: not found

где я пронубил не как понять не могу

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

и что? Да, если я начал с !#/bin/bash, то я пишу на баше

Да уж пиши, что тебя отговаривать - плохо воспитанный ребёнок всегда будет назло делать. Почему «нельзя» он понять не способен, потому что ещё глуп, но это «нельзя» же так ограничивает его свободу.

Но при этом очень маловероятно что код глупого ребёнка кому-то ещё будет интересен и попадёт в паблик, так что всем пофиг.

например [ -d «$X» ]

Читай больше книг, чтобы научиться контекст не терять, а то совсем плохим себя выставляешь. Так и быть, напомню что речь шла о том, что в [] не бывает присваивания.

может ты Царь, да? А чё? Он тоже любит придумывать всякий бред, а потом его излагает

Да, не верь прописным истинам, у тебя же свой ОБВМ.

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

Так стандарт де-факто это windows и cmd, а не bash. Давай, пиши батфайлы теперь. Так как ты молодой и прогрессивный, разрешаю даже powershell.

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

Да уж пиши, что тебя отговаривать - плохо воспитанный ребёнок всегда будет назло делать. Почему «нельзя» он понять не способен, потому что ещё глуп, но это «нельзя» же так ограничивает его свободу.

хорошо, что у тебя нет детей. Надеюсь ты поумнеешь.

Читай больше книг, чтобы научиться контекст не терять, а то совсем плохим себя выставляешь. Так и быть, напомню что речь шла о том, что в [] не бывает присваивания.

бывает в

if (( x == y )); then

Да, не верь прописным истинам

абсолютной истинны не существует, детка.

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

Так стандарт де-факто это windows и cmd, а не bash.

это смотря где. На компьютерах секретарш и домохозяек — да, конечно.

Так как ты молодой и прогрессивный

это типа насмешка, да?

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

бывает в

Ему про Фому а он про Ерёму. Слил уже, расслабься.

абсолютной истинны не существует, детка

Шаблонная фраза именно той категории людей к которой я тебя отнёс.

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

Шаблонная фраза именно той категории людей к которой я тебя отнёс.

а теперь подумай, что она значит по-русски...

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

Во-вторых, сравнивают переменную с константой, никогда не наоборот

Непременно. Тебе тоже советую задуматься.

вот я уже второй день в непонятках, откуда ты эту «абсолютную истину» вызнал. Может дашь ссылку на скрижали?

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

окей. я согласен, at или нормальный крон ему бы помогли больше, тут и спорить не о чем.

и ты прав, он просил баш, ты показал баш.

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

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

окей. я согласен, at или нормальный крон ему бы помогли больше, тут и спорить не о чем.

окей.

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

тут дело в том, что в скрипте ни одна строка, а 100 (к примеру). И если в 50 строках используются башизмы, и дают профит, то довольно глупо вырывать 51ю строку из скрипта, и доказывать, что её можно написать на sh, хоть и чуть усложнив. Её — можно.

Ну вот тебе конкретный пример: я пишу скрипт, в котором храню данные в ассоциативном массиве. Ну да, я использую if [ "$S" == "string" ], и что? Какой смысл мне ставить в начале строк x, ежели мой скрипт будет весь и полностью не годен, т.к. построен вокруг ассоциативного массива, и заработает не просто на bash, а только на bash'е, который не старше определённой версии?

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

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

да, лучше, если это код который никогда не прийдется адаптировать под posix-only системы (т.е. это код для внутреннеого использования). если нет, то я лично привык использовать awk — там ассоциативные массивы есть, как и многое другое, и авк гарантированно везде есть. не всегда удобно, но что поделаешь. кстати, словари это пожалуй единственная реальная причина использовать баш и башизмы. наверное именно поэтому я избегаю башизмов во всем, даже для линукс-онли кода — ведь перепилить потом словари на авк и не править ничего другого — гораздо проще чем править все.

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

да, лучше, если это код который никогда не прийдется адаптировать под posix-only системы (т.е. это код для внутреннеого использования).

почему только для внутреннего? Такой код везде годен, просто в некоторых случаях придётся установить/обновить bash. А если это невозможно, то нужно полностью такой код переписывать.

я лично привык использовать awk — там ассоциативные массивы есть, как и многое другое, и авк гарантированно везде есть

ага, щаз, блин. Awk тоже разное бывает, есть posix-awk, есть gawk, и есть некоторые другие. Увы. Там тоже такая ерунда.

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

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

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

Такой код везде годен

Везде, где за машиной сидит долбоеб.

//fixed

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

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

мудило, только дебилы типа тебя пишут свои велосипеды для структур данных на скриптовых ЯП. Словари и прочее можно писать либо на сишечке, либо пользоваться встроенными батарейками(ИЧСХ тоже на сишечке). А если таких батареек нет, то данный ЯП не нужен, для выполнения данной задачи.

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

ага, щаз, блин. Awk тоже разное бывает, есть posix-awk, есть gawk, и есть некоторые другие. Увы. Там тоже такая ерунда.

ну да, а также nawk, mawk, bsd awk. но все они посикс-совместимые. что мешает писать только на посикс-сабсете? ничего такого критичного в «улучшениях» нет.

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

ну да, а также nawk, mawk, bsd awk. но все они посикс-совместимые. что мешает писать только на посикс-сабсете? ничего такого критичного в «улучшениях» нет.

Есть. Если ты хочешь юзать скажем ассоциативные массивы, то у тебя два варианта:

1. юзать расширение shell (bash)

2. юзать внешний костыль (awk)

Мне больше первый способ нравится, ибо быстрее и проще. А что до костыльности — дык и то и то костыли.

И да, что там в gawk я как-то не вдавался, но вот posix версия sed откровенно убога по сравнению с гнутой. А необходимости в awk я вообще не вижу, ибо bash + gnu-sed вполне её покрывают.

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

справедливо и обратное gnu awk способен на 99% заменить gnu sed и bash, оставшийся процент — вопрос удобства использования для однострочников с пайпами.

val-amart ★★★★★
()
Ответ на: комментарий от emulek

Ты забыл 3. Сделать всё на perl.

Он покрывает ~146% возможностей баша помимо всего, что давно в CPAN.

x3al ★★★★★
()
Ответ на: комментарий от val-amart

справедливо и обратное gnu awk способен на 99% заменить gnu sed и bash

ладно, это уже бессмысленный спор...

Сделать всё на perl.

угу. Можно и на перловке. Ок.

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

По-умолчанию кронтаб у пользователя есть в большинстве дистрибутивов. И его не выдают, а запрещают при необходимости.

Chumka ★★★
()

а говорят вирусов под линь нету

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