Почему подключение vnc к экрану блокировки Linux «заблокировано» и нет возможности ввести пароль?

xargsзавершит работу со статусом выхода от 1 до 125. (123 с GNU xargs), если какая-либо из команд завершится неудачно, и прервется, если какая-либо из команд завершится ошибкой, со статусом 255.

Чтобы надежно использовать xargsна выходеfind-print0)и сохранить стандартный ввод команды, вам понадобится GNU xargs. Итак, с GNU xargsи оболочкой с поддержкой замены процессов, такой как ksh,zshилиbash:

xargs -n1 -r0a <(find. -type f -iname '*.sh' -print0) sh./testScripts.sh

Или прервать при первом же отказе:

xargs -r0a <(find. -type f -iname '*.sh' -print0) sh -c '
  for file do
    sh./testScripts.sh "$file" || exit 255
  done' sh

Вы также можете прервать findпри первой ошибке с (кодом POSIX):

find. -type f -name '*.[sS][hH]' -exec sh -c '
  for file do
    if ! sh./testScripts.sh "$file"; then
      kill -s PIPE "$PPID"
      exit 1
    fi
  done' sh {} +

(использование SIGPIPE в качестве менее шумного сигнала с некоторыми оболочками, такими какbash). Это приведет к уничтожению findи, таким образом, возврату с не--нулевым статусом выхода.

Чтобы получить точное значение статуса выхода (здесь последней )неудачной команды, с помощью zshили bashвы также можете выполнить:

ret=0
while IFS= read -rd '' -u3 file; do
  sh./testScripts.sh "$file" 3<&- || ret=$?
done 3< <(find. -type f -iname '*.sh' -print0)

Хотя с zshдля этого даже findне нужно:

set -o extendedglob
ret=0
for file (./**/*(#i).sh(D.)) {
 ./testScripts.sh $file || ret=$?
}
0
02.12.2019, 23:21
1 ответ

Похоже, Gnome знает об этой ошибке. Вы можете увидеть эволюцию проблемы здесьhttps://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2196

2
09.07.2020, 08:19

Теги

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