[英]Bash command value assignment
任何人都可以解释一下以下bash命令的作用吗?
CMD_PATH=${0%/*}
分配给CMD_PATH变量的值是多少?
它从$0
变量中删除了最后一次出现斜杠字符的任何内容,这是( 在大多数情况下 ,有时取决于脚本的运行方式)脚本当前执行的文件夹。
它显示了正在运行的进程的第一个目录。 如果在脚本中,则显示其名称。
$ 0是正在运行的进程的名称。 如果在外壳中使用它,则它将返回外壳的名称。 如果在脚本中使用它,它将是脚本的名称。
我们来解释一下:
$ 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.