2016-08-22 3 views
-2

Я новичок в оболочке. И я немного смущен использованием(), [], {} в сценарии оболочки, например $(), [ [] ], ${} и так далее. Я хочу классифицировать их использование для более эффективного изучения сценария оболочки.В оболочке bash, как классифицировать использование(), (()), [], [[]] и {}?

ответ

3

[ ] против [[ ]] являются test operators
См What's the difference between [ and [[ in bash? хороший обзор на их различия.

$() является command substitution

$ echo "my hostname is: $(hostname)" 
my uptime is: MYPC 

$(()) является arithmetic expansion

$ echo "$((5 + 5))" 
10 

${ }
Это используется для обозначения переменных и избежать путаницы их имени.

$ v="hello" 
$ echo "$vbye" 

$ echo "${v}bye" 
hellobye 

Кроме того, он используется для ссылки на элементы массива:

$ declare -A my_arr 
$ my_arr[a]="hello" 
$ echo "${my_arr[a]}" 
hello 

() и { } также используются в качестве grouping commands

() работает в субоболочке:

$ v=5 
$ (v=2; echo "$v") 
2 
$ echo "$v" 
5 

В то время как { list, } не имеет:

$ v=5 
$ { v=2; echo "$v"; } 
2 
$ echo "$v" 
2 
+0

Есть ли другое использование {} кроме $ {}? –

+0

@YuanWen да, см. Мое обновление в '()' и '{list; } '. – fedorqui

Смежные вопросы