cd $(dirname $(readlink -f $0))
Run Code Online (Sandbox Code Playgroud)
它是一个更大的脚本文件的一部分,但是在#!/ bin/bash之后的最开始出现
这似乎会将shell的工作目录更改为存储脚本的目录.这可能是为了使脚本可以引用与其自身相同的目录中的其他内容.
我以前用过这个变种,location=$(dirname $0).这不会更改目录,而是存储脚本的路径以供以后使用.dirname $0获取文件名(在这种情况下,$ 0或shell找到该文件的路径),以及echo存储它的目录.在$()组合中包装命令(或一系列命令)会导致命令的输出(无论被打印至屏幕通过echo,df,cat,等等)使用,以取代表达$().示例:
variable=$(echo "test")
变成
variable="test"
与其他编程语言一样,$()可以嵌套.一个例子是:
variable=$(echo $(echo "test"))
最内层表达式将打印'test',然后将其替换为最外层的参数echo.echo然后将其输出替换为要存储的值variable- 第一个和第二个示例的结果将是相同的.一个愚蠢的例子.但它的确有效.
唯一的不同之间$(dirname $(readlink -f $0))和$(dirname $0),我可以看到的是,前者总是返回绝对路径.后者可以返回相对路径或绝对路径,具体取决于工作目录相对于脚本的位置.
readlink -f $0确实返回了一个路径dirname采用该路径,并为您提供目录名cd将目录更改为该目录名$0是一个变量,保存当前脚本被调用时的名称。看:
man readlinkman dirnameman cd| 归档时间: |
|
| 查看次数: |
2905 次 |
| 最近记录: |