shell_38.Linux读取脚本名

读取脚本名

(1)示例

复制代码
$ cat positional0.sh 
#!/bin/bash 
# Handling the $0 command-line parameter 
#
echo This script name is $0. 
exit 
$ 
$ bash positional0.sh 
This script name is positional0.sh. 
$

(2)如果使用另一个命令来运行 shell 脚本,则命令名会和脚本名混在一起,出现在位置变量$0 中:

复制代码
$ ./positional0.sh 
This script name is ./positional0.sh. 
$

那么位置变量$0 就会包含整个路径:

复制代码
$ $HOME/scripts/positional0.sh 
This script name is /home/christine/scripts/positional0.sh. 
$

(3)如果你编写的脚本中只打算使用脚本名,那就得做点儿额外工作,剥离脚本的运行路径。好在有个方便的小命令可以帮到我们。

basename 命令可以返回不包含路径的脚本名:

复制代码
$ cat posbasename.sh 
#!/bin/bash 
# Using basename with the $0 command-line parameter 
# 
name=$(basename $0) 
# 
echo This script name is $name. 
exit 
$ 
$ ./posbasename.sh 
This script name is posbasename.sh. 
$

(4)可以使用此技术编写一个脚本,生成能标识运行时间的日志消息:

复制代码
$ cat checksystem.sh 
#!/bin/bash 
# Using the $0 command-line parameter in messages 
# 
scriptname=$(basename $0) 
# 
echo The $scriptname ran at $(date) >> $HOME/scripttrack.log 
exit 
$ 
$ ./checksystem.sh
$ cat $HOME/scripttrack.log
The checksystem.sh ran at Thu 04 Jun 2020 10:01:53 AM EDT 
$
相关推荐
GeminiJM7 分钟前
LangGraph 源码学习笔记
linux·笔记·学习·langchain
charlie1145141917 分钟前
RK3568跑Ubuntu 24.04全路程指南(以正点原子的RK3568开发板为例子)
linux·笔记·ubuntu·rootfs·教程·环境配置·rk3568
MyFreeIT10 分钟前
OpenSSL
linux·运维·服务器
瀚高PG实验室10 分钟前
hghac8008漏洞扫描处理
linux·网络·windows·瀚高数据库
MarkHD21 分钟前
自动化桌面整理脚本——用GUI自动化终结混乱(Day 19-20)
运维·自动化
funnycoffee12323 分钟前
华为,华三交换机开启snmp的命令
服务器·华为·华为snmp·华三snmp
AD钙奶-lalala27 分钟前
Error starting ApplicationContext. To display the condition evaluation···
linux·运维·服务器
市安28 分钟前
基于Debain构建Ngxin镜像
运维·nginx·docker·云原生·容器·debian·镜像
未来之窗软件服务28 分钟前
平台对接(2)美团/抖音/饿了么/有赞/微信/京东券核销服务商模式—东方仙盟
大数据·运维·微信·平台对接·仙盟创梦ide·东方仙盟·东方仙盟sdk
阿正的梦工坊29 分钟前
Nginx(发音:engine x)是什么?
运维·nginx