Bash命令值赋值

时间:2013-06-26 11:54:58

标签: bash shell

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

CMD_PATH=${0%/*}

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

3 个答案:

答案 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