文章目录
- shell脚本如何获取当前执行脚本名称
- 解释:`$(basename "$0")`
- `$0`(当前脚本的名称,带脚本与工作目录之间的相对路径)
- `basename`(去除字符串路径部分)
- 示例
- 拓展:basename命令的完整用法(option选项)
- 示例
shell脚本如何获取当前执行脚本名称
示例:
#!/bin/bash
SCRIPT_NAME=$(basename "$0")
echo "My file name is ${SCRIPT_NAME}"
运行结果:
解释:$(basename "$0")
我们使用basename "$0"
来获取脚本的名称。$0
表示当前脚本的名称,basename "$0"
会将路径部分去除,只保留文件名部分。
$0
(当前脚本的名称,带脚本与工作目录之间的相对路径)
$0
表示当前脚本的名称,比如:
#!/bin/bash
echo $0
运行结果:
basename
(去除字符串路径部分)
basename
是一个常用的Linux命令,用于获取文件路径中的文件名部分。
basename
命令的语法如下:
basename [OPTIONS] FILENAME
其中,OPTIONS
是可选的参数,FILENAME
是要处理的文件名或路径。
basename
命令会将FILENAME
中的路径部分去除,只保留文件名部分,并将结果输出。
以下是一些常用的basename
命令的示例:
basename /path/to/file.txt
:输出结果为file.txt
,去除了路径部分。basename /path/to/directory/
:输出结果为directory
,去除了路径部分,并且保留了末尾的斜杠。basename /path/to/file.txt .txt
:输出结果为file
,去除了路径部分,并且去除了指定的文件扩展名。
示例
root@ubuntu:/userdata#
root@ubuntu:/userdata# basename ./df/dd.xx
dd.xx
root@ubuntu:/userdata#
root@ubuntu:/userdata#
root@ubuntu:/userdata# basename /df/dd.xx
dd.xx
root@ubuntu:/userdata#
root@ubuntu:/userdata#
root@ubuntu:/userdata# basename /dfd.ds/dd.xx
dd.xx
root@ubuntu:/userdata#
拓展:basename命令的完整用法(option选项)
basename完整用法如下:
用法:basename NAME [SUFFIX]
或者:basename OPTION... NAME...
打印出去除任何前导目录组件的NAME。
如果指定了,还会去除末尾的SUFFIX。
长选项的必选参数对于短选项也是必选的。
-a, --multiple
支持多个参数,并将每个参数视为一个NAME-s, --suffix=SUFFIX
去除末尾的SUFFIX;隐含-a
选项-z, --zero
每行输出以NUL字符结尾,而不是换行符--help
显示此帮助信息并退出--version
输出版本信息并退出
示例
basename /usr/bin/sort -> "sort"
basename include/stdio.h .h -> "stdio"
basename -s .h include/stdio.h -> "stdio"
basename -a any/str1 any/str2 -> "str1" 后跟 "str2"
请仔细研读下面,我就不写注释了:
root@ubuntu:/userdata#
root@ubuntu:/userdata# basename /usr/bin/sort
sort
root@ubuntu:/userdata#
root@ubuntu:/userdata# basename include/stdio.h .h
stdio
root@ubuntu:/userdata#
root@ubuntu:/userdata# basename include/stdio.h
stdio.h
root@ubuntu:/userdata#
root@ubuntu:/userdata# basename -s .h include/stdio.h
stdio
root@ubuntu:/userdata#
root@ubuntu:/userdata# basename -a any/str1 any/str2
str1
str2
root@ubuntu:/userdata#
root@ubuntu:/userdata#
root@ubuntu:/userdata# basename -s io.h include/stdio.h
std
root@ubuntu:/userdata#
root@ubuntu:/userdata# basename include/stdio.h o.h
stdi