2

谁能解释一下以下 bash 命令的作用?

CMD_PATH=${0%/*}

分配给 CMD_PATH 变量的值是什么?

4

3 回答 3

4

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

于 2013-06-26T11:57:14.737 回答
2

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

“echo $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
于 2013-06-26T11:56:36.240 回答
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
    
于 2013-06-26T11:56:32.753 回答