We use braces {}
for variable expression like
NAME="test"
FILE_NAME=${NAME}file
But I don't understand in which scenarios we use brackets ()
Say nslookup $(hostname)
works only with ()
brackets.
Can someone explain?
We use braces {}
for variable expression like
NAME="test"
FILE_NAME=${NAME}file
But I don't understand in which scenarios we use brackets ()
Say nslookup $(hostname)
works only with ()
brackets.
Can someone explain?
Minor nitpick first:
[]
()
{}
""
''
``
(Same as the tilde ~ key)Braces are used in BASh scripts for complex variable expansion. Consider string concatenation:
STR="hello"
STR2=$STR
STR2
evaluates to "hello". What if you wanted to make it something like "helloWorld". Doing something like STR2="$STR2World"
won't work, so you use braces, ie: STR2="${STR}World"
.
As for brackets, they are used, similar to the backtick, `, which expands the text between them as the text output from a command.
What if you wanted to store the current time as a string?
STR2=$(date)
Now STR2
stores the string "Thu May 7 09:32:06 PDT 2015".
Additionally, you can use parentheses to execute something in a subshell, which will potentially affect your environment, PID, etc. Very useful for cases where you want a "throwaway" environment with having to track/restore environment variables, directories via pushd
/popd
instead of cd
, etc.
()
are commonly called "brackets" in UK English. –
Cambyses []
are always explicitly called "square brackets" in UK English. separatedbyacommonlanguage.blogspot.ca/2006/08/… –
Emboss ${foo}
as the canonical way to expand parameters, and that $foo
is an example of a special case where the braces can be dropped it doing so doesn't create an ambiguity. –
Antipodes Using parentheses (
executes something. There happens to be a program named hostname - so $(hostname) will execute it.
try which hostname
to see where that program resides
© 2022 - 2024 — McMap. All rights reserved.
()
are parentheses, and these:[]
are brackets. – Cambyses