Синтаксис циклов while
в csh
отличается от синтаксиса Bourne -, подобного оболочкам. Это:
while (arithmetic-expression)
body
end
Когда csh
является интерактивным, по какой-то причине end
должен появиться сам по себе в строке.
Для арифметического -выражения для проверки успешности выполнения команды необходимо{ cmd }
(пробелов ). { cmd }
в арифметических выражениях разрешается в 1, если команда выполнена успешно (завершилась с нулевым статусом выхода )или 0 в противном случае (, если команда завершилась с не -нулевым статусом выхода ).
Так:
while ({ true })
body
end
Но это было бы немного глупо, особенно если учесть, что true
не является встроенной -командой в csh
. Для бесконечного цикла лучше использовать:
while (1)
body
end
Напротив, в оболочках POSIX используется следующий синтаксис:
while cmd; do
body
done
И если вы хотите, чтобы условие оценивало арифметическое выражение, вам нужно запустить команду, которая вычисляет их, например expr
, или ksh
, let
/ ((...))
или test
/ [
в сочетании с арифметическими расширениями $((...))
.
Во время исследования я обнаружил , что идентификатор ключа обычно представляет собой последние 8 или 16 байтов отпечатка ключа. Поэтому я хотел извлечь только их из вывода. Как этого добиться?
Я нашел следующий подход, который работает:
keyID.sh
#! /bin/bash
KEY_PATH=$1
KEY_FINGERPRINT=$(gpg --with-fingerprint ${KEY_PATH} | grep "Key fingerprint" | cut -d "=" -f 2 | tr -d ' ' | tr '[:upper:]' '[:lower:]')
echo ${KEY_FINGERPRINT} | grep -o '.\{8\}$'
echo ${KEY_FINGERPRINT} | grep -o '.\{16\}$'
Вы можете импортировать ключ GPG, используя rpm --import GPGFILE
, а затем запуститьrpmkeys --checksig foo.rpm