Ответы пользователя по тегу bash
  • Как сразу убить процесс в Bash?

    @vinca
    1. $ sleep 1000
    2. CTR+z
    3. $ sleep 2000
    4. CTR+z
    5. $ jobs
    [1]- Stopped sleep 1000
    [2]+ Stopped sleep 2000
    6. $kill -9 %2 # обратите внимание на %2 - посылаем сигнал фоновому таску
    [2]+ Stopped sleep 2000
    7. $ jobs
    [1]- Stopped sleep 1000
    [2]+ Убито sleep 2000

    Если кратко - используйте набор утилит, для работы с фоновыми задачами: jobs, bg, fg.
    Отправляйте процесс в фон, используя комбинацию CTR+z, после чего Вы получите id задачи и далее id используете в утилите kill, для отсылки таску любого сигнала. В место pid процесса используйте в качестве аргумента id таска, сопровождая его процентом - % (см. пример 6).
    Ответ написан
    1 комментарий
  • Как вытащить число при помощи awk/sed из html файла?

    @vinca
    Можно воспользоваться утилитой xmllint.

    Ставим libxml2-utils, например для Ubuntu:
    $ sudo apt-get install libxml2-utils
    Далее, для вашего варианта:
    $ echo "<dl><dt>Текущий баланс</dt><dd><div class="span28"><span class="money bold">11 111<sup class="hide-text">.</sup><sup>32</sup>" | xmllint --html --xpath '//span/text()' - | sed 's/ //'

    Или из файла:
    $ xmllint --html --xpath '//span/text()' 2.xml| sed 's/ //'
    Ответ написан
    Комментировать
  • Как проверить статус создания tar архива?

    @vinca
    "!=" - используется для сравнения строк, а Вам нужно сравнить целые числа! Используйте для этого оператор "-ne".
    Ответ написан
    Комментировать
  • Как назначать переменные некоторым словам строки в цикле bash?

    @vinca
    $ echo "var1:var2:var3" | tr ':' ' ' | while read a b c; do echo "$a / $b / $c"; done
    var1 / var2 / var3

    read умеет работать с несколькими переменными, разделенные пробелом, по этой причине нужно заменить ":" на " " (пробел) - например с помощью tr. Данная конструкция while read a b c, подойдет для фиксированного набора значений в строках файла ./file - в данном случае их 3-и, но Вы можете сделать больше. =)
    Ответ написан
    2 комментария
  • Как отсечь нули в числе?

    @vinca
    Можно воспользоваться printf (с форматированием), по примеру printf в - который приведет к нужному формату числа:
    $ printf '%.2f\n' '27,970000'
    27,97
    $ printf '%.2f\n' '27,9'
    27,90
    $ printf '%.2f\n' '27'
    27,00

    Обратите внимание на запятую - Вам точку нужно заменить на запятую, например через sed или tr.

    Конкретно случай для Вас:
    $ echo "27,970000" > 1.txt # записываем в файл 1.txt значение 27,970000
    $ printf '%.2f\n' $(cat 1.txt) # читаем из файла 1.txt и приводим к формату %.2f
    27,97 # результат

    Точку заменить на запятую можно вот так:
    $ echo "27.970000" > 1.txt
    $ printf '%.2f\n' $(cat 1.txt | tr '.' ',')
    27,97
    Ответ написан
    6 комментариев