What does it mean in shell when we put a command inside dollar sign and parentheses: $(command)

前端 未结 2 868
忘了有多久
忘了有多久 2020-11-27 12:57

I just want to understand following line of code in shell. It is used to get the current working directory. I am aware that $(variable) name return the value in

相关标签:
2条回答
  • 2020-11-27 13:19
    DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
    

    Could anybody help me to figure out how this command get executed?

    Let's look at different parts of the command. BASH_SOURCE is a bash array variable containing source filenames. So "${BASH_SOURCE[0]}" would return you the name of the script file.

    dirname is a utility provided by GNU coreutils that remove the last component from the filename. Thus if you execute your script by saying bash foo, "$( dirname "${BASH_SOURCE[0]}" )" would return .. If you said bash ../foo, it'd return ..; for bash /some/path/foo it'd return /some/path.

    Finally, the entire command "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" gets the absolute directory containing the script being invoked.

    $(...) allows command substitution, i.e. allows the output of a command to replace the command itself and can be nested.

    0 讨论(0)
  • 2020-11-27 13:37

    Usage of the $ like ${HOME} gives the value of HOME. Usage of the $ like $(echo foo) means run whatever is inside the parentheses in a subshell and return that as the value. In my example, you would get foo since echo will write foo to standard out

    0 讨论(0)
提交回复
热议问题