为了账号安全,请及时绑定邮箱和手机立即绑定

我如何知道Bash脚本中的脚本文件名?

/ 猿问

我如何知道Bash脚本中的脚本文件名?

MMMHUHU 2019-11-21 10:53:58

如何确定脚本本身内部的Bash脚本文件的名称?

就像我的脚本在文件中一样runme.sh,那么我如何在不进行硬编码的情况下显示“您正在运行runme.sh”消息呢?


查看完整描述

3 回答

?
犯罪嫌疑人X

me=`basename "$0"`

要通读通常不是您想要的符号链接1(您通常不希望这样使用户感到困惑),请尝试:


me="$(basename "$(test -L "$0" && readlink "$0" || echo "$0")")"

海事组织,这将产生令人困惑的输出。“我运行了foo.sh,但这是说我正在运行bar.sh !?一定是bug!” 此外,具有不同名称的符号链接的目的之一是根据它的名称提供不同的功能(在某些平台上可以考虑一下gzip和gunzip)。


1也就是说,要解析符号链接,以便在用户执行时foo.sh实际上是指向的符号链接bar.sh,您希望使用解析的名称bar.sh而不是foo.sh。


查看完整回答
反对 回复 2019-11-21
?
忽然笑

#-------------脚本------------- ##-------------已调用------ -------#


#!/bin/bash


echo

echo "# arguments called with ---->  ${@}     "

echo "# \$1 ---------------------->  $1       "

echo "# \$2 ---------------------->  $2       "

echo "# path to me --------------->  ${0}     "

echo "# parent path -------------->  ${0%/*}  "

echo "# my name ------------------>  ${0##*/} "

echo

exit




#注意下一行,第一个参数在双引号,#和单引号内被调用,因为它包含两个单词



$   / misc / shell_scripts / check_root / show_parms 。sh “'你好,那里”“ ”“威廉” 


#-------------结果-------------#


#用--->'hello there''william' #$ 1 调用的参数---------------------->'hello there' #$ 2 ---- ------------------>'william' #我的路径--------------> / misc / shell_scripts / check_root / show_parms。 sh #父路径-------------> / misc / shell_scripts / check_root #我的名字-----------------> show_parms.sh







#  -  -  -  -  -  - - 结束  -  -  -  -  -  - - #


查看完整回答
反对 回复 2019-11-21
?
12345678_0001

使用bash> = 3时,以下工作有效:


$ ./s

0 is: ./s

BASH_SOURCE is: ./s

$ . ./s

0 is: bash

BASH_SOURCE is: ./s


$ cat s

#!/bin/bash


printf '$0 is: %s\n$BASH_SOURCE is: %s\n' "$0" "$BASH_SOURCE"


查看完整回答
反对 回复 2019-11-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信