任何人都可以解释以下bash命令的作用吗?
CMD_PATH=${0%/*}
分配给CMD_PATH变量的值是什么?
答案 0 :(得分:4)
它从$0
变量中除去最后一次斜杠字符之外的任何内容,这是(in most cases,有时取决于脚本的运行方式)脚本当前执行的文件夹。
答案 1 :(得分:2)
它显示正在运行的进程中的第一个目录。如果它在脚本中,则显示其名称。
来自What exactly does "echo $0" return:
$ 0是正在运行的进程的名称。如果你在shell中使用它, 然后它将返回shell的名称。如果你在里面使用它 脚本,它将是脚本的名称。
我们来解释一下:
$ echo $0
/bin/bash
与
相同$ echo ${0}
/bin/bash
然后进行bash替换:获取文本到最后一个斜杠:
$ echo ${0%/*}
/bin
这个例子可以用这个例子来理解:
$ a="hello my name is me"
$ echo ${a% *}
hello my name is
答案 2 :(得分:1)
返回已从中启动当前运行脚本的目录的名称。
测试它:
创建目录/tmp/test
:
mkdir /tmp/test
使用以下内容创建文件't.sh`:
#!/bin/bash
echo $0
echo ${0%/*}
授予t.sh
执行权限:
chmod +x /tmp/test/t.sh
执行它,你会看到:
/tmp/test/s.sh
/tmp/test