繁体   English   中英

Bash命令值分配

[英]Bash command value assignment

任何人都可以解释一下以下bash命令的作用吗?

CMD_PATH=${0%/*}

分配给CMD_PATH变量的值是多少?

它从$0变量中删除了最后一次出现斜杠字符的任何内容,这是( 在大多数情况下 ,有时取决于脚本的运行方式)脚本当前执行的文件夹。

它显示了正在运行的进程的第一个目录。 如果在脚本中,则显示其名称。

“ echo $ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM