Добавление в базовую переменную command

Поскольку вы уже упомянули этот вопрос , вы наверняка знаете его ответы, и я не уверен, чего вы на самом деле хотите.

Я не хочу хранить программы, которыми больше не буду пользоваться.

Для всех известных мне дистрибутивов программное обеспечение поставляется в пакетах, и если вам не нужен пакет, вы должны деинсталлировать его через диспетчер программного обеспечения распространения. Однако другие пакеты могут зависеть от него, и в этом случае большинство менеджеров пакетов не позволят вам удалить его.

Если вы хотите удалить программное обеспечение, которое является частью пакета, который вы хотите сохранить в принципе, но хотите удалить его части: обычно это не предназначено и не поддерживается. И это не рекомендуется. Вам следует сделать это вручную. На что следует обратить внимание: при обновлении рассматриваемого пакета будет восстановлено все содержимое, включая то, что вы удалили вручную; то же самое с пакетным ремонтом. Более того, если какой-то другой системный инструмент xyz, о котором вы никогда не думали, зависит от того, что вы хотите удалить, он сломается; в худшем случае вы зададите здесь вопрос типа , почему xyz не работает, он работал до , который, вероятно, будет закрыт как не по теме. Таким образом, если это - это то, что вы имеете в виду, пожалуйста, не делайте этого. Избавьте себя от хлопот и задайте нам вопрос, на который нет ответа.

2
24.11.2018, 21:54
3 ответа

Переменные оболочки по умолчанию являются строками. Некоторые оболочки поддерживают другие типы переменных, но вы должны сообщить об этом оболочке.

В любой оболочке в стиле POSIX ( sh , кроме старых систем Unix, dash, bash, ksh, zsh и т. Д.) Вы можете использовать арифметическое расширение , чтобы указать оболочке для выполнения арифметических действий при анализе присвоения переменной.

t=20
s=$((t+30))
echo "$s"

(Двойные кавычки здесь не обязательны, но это хорошая привычка .)

Также можно сохранить текст выражения для оценки и выполнить арифметические операции при распечатке.

t=20
s=$((t+30))
echo "expression: $s; evaluated: $(($s))"

Но будьте осторожны с использованием явных подстановок переменных внутри арифметических выражений: они заменяются как текст, а не как арифметические подвыражения, поэтому приоритет операторов может выглядеть странно.

echo "$(($s*2))" # equivalent to $((t+30*2)), so prints 80, not 100

В bash, ksh или zsh вы можете вместо этого использовать let или ((…)) для выполнения арифметических операций.

t=20
let s=t+30
echo "$s"

или

((t = 20))
((s = t + 30))
echo "$s"

или их варианты.

Другой возможностью в bash, ksh или zsh является использование встроенного набора typeset для объявления переменной как целого числа. Затем каждое присваивание ему выполняет арифметическую оценку.

typeset -i s t
t=20
s=t+30
echo "$s"
2
27.01.2020, 22:03

Вот один из способов:

t=20  

s=$((t+30))  # or s="$((t+30))"

echo "$s"
1
27.01.2020, 22:03

Вы можете выполнять арифметические действия с помощью команды expr, например:

t=20
s=$(expr "$t" + 30)
echo "$s"

введите man expr на своем терминале для получения дополнительной информации.

0
27.01.2020, 22:03

Теги

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