shell 实践版 $0 和 dirname的含义

环境

服务器:centos6.5
工具:CRT

场景

今天依然是在看alluxio-mount.sh脚本

看到这么一句:

$(cd "$( dirname "$( readlink "$0" || echo "$0" )" )"; pwd)

这里面的$0,我经常看到,但是我总是忘记;今天我打算实践下,加深下印象;

网上给出一致答案:

$0 —> Shell本身的文件名(错误的理解)

我后面也注释了,这是错误的;

测试如下:
test.sh 测试脚本:

#/bin/bash
echo "$0"
# 目前看来没什么问题
[yutao@master01 ~]$ ./test.sh 
#结果
./test.sh
# 我再加一层目录
[yutao@master01 ~]$ cd test_files/
[yutao@master01 test_files]$ mv ../test.sh ./
[yutao@master01 ~]$ ./test_files/test.sh 
# 结果
./test_files/test.sh
# 可以看出上面不只是打印出来文件名,还有上一层的路径
# 我再加一层目录
[yutao@master01 test_files]$ mkdir love
[yutao@master01 test_files]$ cd love/
[yutao@master01 love]$ mv ../test.sh ./
[yutao@master01 ~]$ ./test_files/love/test.sh 
# 结果
./test_files/love/test.sh

$0

这个表示的正真的含义是:当前运行的命令名,一般用于脚本中。

网上大量的说法是Shell本身的文件名。一方面说明大家都是复制粘贴,没实践;另一方面可能,大家只测了当前目录的情况;

dirname

这个我们来看看官方的解释:

[yutao@master01 ~]$ dirname --help
用法:dirname 名称
 或:dirname 选项
输出已经去除了尾部的"/"字符部分的名称;如果名称中不包含"/",
则显示"."(表示当前目录)。

      --help            显示此帮助信息并退出
      --version         显示版本信息并退出

示例:
  dirname /usr/bin/sort 输出"/usr/bin"dirname stdio.h               输出"."。

请向bug-coreutils@gnu.org 报告dirname 的错误
GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
请向<http://translationproject.org/team/zh_CN.html> 报告dirname 的翻译错误
要获取完整文档,请运行:info coreutils 'dirname invocation'

这句话,已经说得很明白:

输出已经去除了尾部的”/”字符部分的名称;如果名称中不包含”/”,则显示”.”(表示当前目录)。

test.sh脚本:

#/bin/bash
echo "`dirname $0`"
echo "$0"

测试:

[yutao@master01 ~]$ ./test_files/love/test.sh 
./test_files/love
./test_files/love/test.sh

总结

多看,多实践,多实践

参考地址:

https://zhidao.baidu.com/question/712827456804604325.html

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山鬼谣me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值