как мы можем перехватить код выхода скрипта bash при запуске скрипта bash в python

Чтобы объяснить, почему cksum {${Z//\ /,}}не работает так, как вы ожидали:

  1. в соответствии с bash порядком замен/расширений , раскрытие фигурных скобок происходит перед подстановками параметров
  2. однако, документировано , что «во избежание конфликтов с расширением параметра строка ‘${’ не считается подходящей для расширения фигурной скобки». --поэтому bash не выполняет раскрытие фигурных скобок здесь.
  3. , затем оболочка в конечном итоге переходит к подстановке параметров, и команда расширяется доcksum {file1,file4}
  4. оболочка не возвращается назад и не -выполняет список расширений, поэтому мы не получаем раскрытие фигурных скобок снова :у нас остается одно слово "{file1,file4}"
  5. и такого файла нет.

Когда вы вводите evalв микс,вы явно просите оболочку еще раз просмотреть список расширений. Теперь мы можем получить расширение скобок для команды cksum {file1,file4}, и вы получите контрольные суммы для этих двух файлов.

0
16.09.2020, 16:10
1 ответ

Функция subprocess.call возвращает объект returncode , который является int . Это будет значение кода выхода подпроцесса.

>>> foo = subprocess.call(['/usr/bin/true'])
>>> foo
0
>>> foo = subprocess.call(['/usr/bin/false'])
>>> foo
1
1
18.03.2021, 23:04

Теги

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