谁能解释一下以下 bash 命令的作用?
CMD_PATH=${0%/*}
分配给 CMD_PATH 变量的值是什么?
它会从变量中删除最后一次出现的斜杠字符之外的任何内容,$0
变量是(在大多数情况下,有时取决于脚本的运行方式)当前执行脚本的文件夹。
它显示了正在运行的进程的第一个目录。如果它在脚本中,则会显示其名称。
$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
返回当前正在运行的脚本已启动的目录的名称。
要测试它:
创建目录/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