Ошибка при использовании if со счетом в Bash [закрыто]

Encontré una respuesta cuando estaba preparando esta pregunta. Otras respuestas son bienvenidas.

En un proyecto relativamente grande awk , como translate -shell , se usa la primera solución:

function parseList(returnAST, tokens,
                   leftBrackets,
                   rightBrackets,
                   separators,
                   ####
                   i, j, key, p, stack, token) {
  ...
}

Los parámetros

después de ####son ​​locales.

awk permite llamar a la función con menos parámetros, p. parseList(ast, tokens)o parseList(ast, tokens, lb, rb, sep). Por lo tanto, solo la firma es complicada.

3
04.08.2018, 03:40
1 ответ

Дальнейшее улучшение благодаря Кусалананде.

  • Проверка содержимого файла не требуется, так как цикл while readне будет работать с пустым файлом.
  • Затем вы можете просто использовать [ -s pid.txt ] || rm pid.txtдля удаления pid-файла. Однако , действительно ли у вас есть причина сохранять файл после обработки? Скорее всего, вы захотите удалить его в любом случае.

while read -r line
do
    kill "$line"
done < pid.txt
[ -s pid.txt ] || rm pid.txt

Вместо этого используется цикл while read. из for $(cat...). Не читать строки с for .

Опция -rуказывает «не позволять обратной косой черте экранировать любые символы», что на самом деле не должно быть проблемой в файле pids, но рекомендуется всегда устанавливать, если нет особой причины не делать этого.

5
27.01.2020, 21:15

Теги

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