В оболочке установка переменных будет выполняться с помощью:
var1=toto
var2="$(echo toto | othercommand)"
У вас не может быть пробелов между вашим именем переменной, символом равенства и значением, которое вы присваиваете своей переменной.
Затем, чтобы отобразить переменную, вы должны сделать:
echo $var
echo "$var"
echo "${var}"
Символ &
в bash / sh используется для «управления заданиями», что является еще одной темой, ...
Вместо этого начните с использования следующего, расскажите нам, как это происходит:
#! /bin/sh
while true;do
var="$(echo "RDTEMP1" | netcat -q2 sanderpi 5033)"
echo "$var"
echo "$(date +%Y-%m-%d%t%H:%M:%S)"
done
Для ваших попыток aptitude
важно отметить, что ~
не означает «ищите следующее flags в статусе пакета '. ~ i
- это сокращение для ~ installed
, а затем d интерпретируется как литерал d , то есть пакеты, имена которых содержат буква d . Я просмотрел документацию для aptitude
( / usr / share / doc / aptitude / html / en / index.html
в моей системе) для шаблона поиска, который удовлетворил бы ваш вопрос, но я не уверен, что это возможно. ~ action
может помочь вам на полпути, но я тоже не уверен в получении статуса.
Альтернативой использованию aptitude
является использование dpkg-query
с grep
.
dpkg-query -Wf '$ {db: Status-Abbrev} $ {Package} \ n' | grep ^ r
Это будет искать пакеты, которые находятся в состоянии удалено , но не очищены.
dpkg-query -Wf '$ {db: Status-Abbrev} $ {Package} \ n' | grep ^ i [^ i]
Это будет искать пакеты, отмеченные как установленные , но не полностью установленные. Если вы не хотите включать пакеты, ожидающие обработки триггерами, вы можете вместо этого использовать ^ i [ncHUF]
.
Чтобы получить только второй столбец вывода (имя пакета), вы можете использовать sed
:
dpkg-query -Wf '$ {db: Status-Abbrev} $ {Package} \ п '| sed -n 's / ^ rR \? \ s * // p'
для поиска удаленных пакетов и
dpkg-query -Wf '$ {db: Status-Abbrev} $ {Package} \ n' | sed -n 's / ^ i [^ i] R \? \ s * // p'
, чтобы найти пакеты, которые нужно установить, но не полностью.
Чтобы немного подробнее рассказать об этом, пакеты Debian состоят из двух частей:
Действие , предназначенное для выполнения над пакетом. Это может быть установка пакета, удаление пакета, удержание пакета или очистка пакета.
статус пакета , который описывает фактическое состояние пакета в вашей системе.
Вышеупомянутый вызов dpkg-query
перечисляет действие и статус пакета, по одному символу каждый, продолжая имя пакета в начале каждой строки.
Чтобы найти пакеты, которые были удалены, но не очищены, мы просто ищем пакеты с действием «удалить»: grep ^ r
. Чтобы найти пакеты, которые установлены или предназначены для установки, но еще не настроены, мы ищем пакеты, действие которых равно установить , но статус которых отличается от установлен : grep ^ i [^ i]
.
Удален, но не очищен: ~ c
(? Config-files
).
Установленные, но не настроенные, отслеживаются не apt, а только dpkg. У пакета есть два состояния: актуальное и желаемое. Apt заботится только о желаемом состоянии. Установлено желаемое состояние пакета, который установлен, но не настроен.
См. ответ Дилана Фрезе для запросов dpkg.