Действительно ли это безопасно к $BASH_COMMAND оценки?

Можно прекратить получать HUP (зависните) сигнал при помощи nohup перед Вашей командой выполнения, или можно использовать удар disown команда для отключения ПОНУКАЕТ эффект для в настоящее время рабочего задания.

nohup vlc somefile.mp3 &

11
09.04.2019, 22:48
2 ответа
[1133563]Одна из возможностей состоит в том, чтобы сделать функцию обёртки, которая одновременно распечатает команду и выполнит её следующим образом:[12161]Чтобы в вашем сценарии можно было сделать:[12162]Нет необходимости в скрипте с ловушкой. Недостатком является то, что он добавляет некоторые [1133980]отладочные [1133981] ключевые слова по всему вашему коду (но это должно быть нормально, обычно такие вещи, как утверждения и т.д.). [12163] Вы даже можете добавить глобальную переменную [1133982]DEBUG[1133983] и изменить функцию [1133984]debug[1133985] следующим образом:[12164] Затем вы можете вызвать свой скрипт как:[12165] или[12166] или просто[12167] в зависимости от того, хотите ли вы получить отладочную информацию или нет.[12168] Я написал с заглавной буквы переменную [1133986]DEBUG[1133987], потому что она должна рассматриваться как переменная окружения. [1133988]DEBUG[1133989] - это тривиальное и общее имя, поэтому оно может противоречить другим командам. Может быть, назовем его [1133990]GNIOURF_DEBUG[1133991] или [1133992]MARTIN_VON_WITTICH_DEBUG[1133993] или [1133994]UNICORN_DEBUG[1133995], если вам нравятся единороги (и тогда вы, вероятно, тоже любите пони).[12169] Обратите внимание. [1133997] В функции [1133998] debug[1133999] я тщательно отформатировал каждый аргумент с помощью [1134000] printf '%q'[1134001], чтобы вывод был корректно экранирован и цитировался таким образом, чтобы его можно было использовать многократно дословно с прямым копированием и вставкой. Он также покажет вам, что именно видела оболочка, так как вы сможете вычислить каждый аргумент (в случае пробелов или других забавных символов). Эта функция также использует прямое присваивание с переключателем [1134002]-v[1134003] в [1134004]printf[1134005], чтобы избежать лишних подоболочек.[1133582].
7
27.01.2020, 19:58

openssl pkeyutl -verify -inkey $PUBLIC_KEY_FILE -sigfile signature-file -in some-file

eval "$BASH_COMMAND"[1173482] выполняет команду.

printintf '%s\n' "$BASH_COMMAND"[1173484] печатает точно указанную команду плюс новую строку.

ssh-keygen -e -f ~/.ssh/id_rsa.pub -m pem

Если команда содержит переменные (т.е. если это что-то вроде [1173485]cat "$foo"[1173486]), то команда распечатывает текст переменной. Невозможно распечатать значение переменной без выполнения команды - подумайте о командах типа [1173487]variable=$(some_function) other_variable=$variable[1173488].

Самый простой способ получить трассу от выполнения скрипта оболочки - это установить опцию [1173489]xtrace[1173490] оболочки, запустив скрипт как [1173491]bash -x /path/to/script[1173492] или вызвав [1173493]set -x[1173494] внутри оболочки. Трасса распечатывается со стандартной ошибкой.[1173094].

5
27.01.2020, 19:58

Теги

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