Вы также можете использовать функцию для yumy
:
#!/bin/bash
yumy() {
yum install -y "$@"
}
yumprovision() {
yumy
}
"$@"
расширяется до аргументов этой функции, поэтому yumy foo bar
работает так же, как yum install -y foo bar
.
Bash по умолчанию не расширяет псевдонимы в неинтерактивных оболочках, но вы можете изменить это с помощью shopt expand_aliases
, если вы действительно хотите, см. The Shopt Builtin в руководстве . Но причин для этого мало, функции во многих отношениях лучше.
Bash не имеет -=
оператора присваивания в синтаксисе основной оболочки (арифметический контекст отличается, см. ниже ). То есть, хотя вы можете использовать =
для присваивания переменных и +=
для добавления к не -целочисленным переменным или добавления к целочисленным переменным, нет -=
, *=
и т. д. с ними. Такая же ситуация и в Ksh, где синтаксис Баша заимствован из (в этом случае, как и во многих других ); и в Zsh, у которого тоже есть подобные особенности.
Другие комбинированные операторы присваивания, кроме +=
, в любом случае, вероятно, не имели бы особого смысла для целых чисел, отличных от -, и, поскольку обычные «строковые» переменные являются наиболее распространенными, вероятно, не стоит иметь эти операторы в основной синтаксис. Тем более, что var*=123
тоже является шаром, а var/=123
выглядит как путь. Но, как было сказано, +=
работает для целых чисел, отличных от -, хотя:
$ foo=123; foo+=456; echo $foo
123456
Руководство, как обычно, несколько кратко об этом, документируя отсутствие -=
только путем упущения. Раздел 3.4 Параметры оболочки описывает назначение переменных и упоминает +=
, но ничего больше.
Конечно, в арифметическом контексте ($((.. ))
, ((.. ))
и т. д. ), доступны все +=
, -=
, *=
и т. д.:
$ foo=456; (( foo -= 123 )); echo $foo
333
Другие ответы отмечают , почемуa-=2
не работает (и что((a-=2))
будет работать ). Я подумал, что стоит записать, что a+=-2
также будет работать:
$ declare -i a=5
$ echo $a
5
$ a+=2
$ echo $a
7
$ a+=-2
$ echo $a
5