Запрещенная команда с перенаправленным STDOUT / STDERR все еще отправляет вывод в оболочку [closed]

awk -F, -v q=\' '
  function shellquote(s) {
    gsub(q, q "\\" q q, s)
    return q s q
  }
  $4 == "" {
    printf "%s,", $1
    system("cmd " shellquote($1))
    next
  }
  {print}'

Важна часть shellquote. Рассмотрим случай значения $1, например, ;reboot.

2
21.10.2016, 12:20
1 ответ

Попробуйте следующий подход:

#!/usr/bin/bash

copen() {
    (($# == 1)) && xdg-open "$1" &>/dev/null & disown
}
copen "$1"

Запустите скрипт следующим образом: ./myscript SomePDFfile.pdf

&>/dev/null - это сокращение для >/dev/null 2>&1, добавленное в bash >4.

Функция copen требует параметра.

1
27.01.2020, 22:19

Теги

Похожие вопросы