linux shell date时间函数、串行执行、位置变量、shift

本文详细介绍了Linux Shell中获取时间(精确到毫秒、时间戳)、时间比较、串行执行脚本以及位置变量和shift命令的用法。通过示例展示了如何在Shell脚本中进行时间的获取、比较和流程控制,对于日常的系统管理和自动化任务非常实用。
摘要由CSDN通过智能技术生成


参考连接:

  • https://blog.csdn.net/wujizhishui/article/details/119955956

一,date获取时间精确到毫秒

举例:

[gudong@k8s-node01 ~]$ date +'%Y-%m-%d/%H:%M:%S.%N' 
2022-05-02/16:53:51.717582175
[gudong@k8s-node01 ~]$ date +'%Y-%m-%d/%H:%M:%S.%N' | cut -b 1-23
2022-05-02/16:53:54.573

二,获取时间戳

参数

-d, --date=STRING         display time described by STRING, not 'now'
%s   seconds since 1970-01-01 00:00:00 UTC

举例:

[gudong@k8s-node01 ~]$ date +%s ; date -d "10 minute ago"  +%s
1651481660
1651481060

三,时间比较

例子1:

[gudong@k8s-node01 ~]$ [ 2 -ge 1 ] && echo "成立" || echo "不成立"
成立
[gudong@k8s-node01 ~]$ 
[gudong@k8s-node01 ~]$ [ 1 -ge 2 ] && echo "成立" || echo "不成立"
不成立
[gudong@k8s-node01 ~]$ 
[gudong@k8s-node01 ~]$ [ `date +%s` -ge `date -d "10 minute ago"  +%s` ] && echo "成立" || echo "不成立"
成立

[gudong@k8s-node01 ~]$ [ `date +%s` -le `date -d "10 minute ago"  +%s` ] && echo "成立" || echo "不成立"
不成立

例子2:

[gudong@k8s-node01 ~]$ old_time=`date +"%Y-%m-%d-%H:%M:%S"`
[gudong@k8s-node01 ~]$ new_time=`date +"%Y-%m-%d-%H:%M:%S"`
[gudong@k8s-node01 ~]$ echo $old_time
2022-05-11-08:25:47
[gudong@k8s-node01 ~]$ echo $new_time
2022-05-11-08:25:54
[gudong@k8s-node01 ~]$ [[ $new_time > $old_time ]] && echo "真" || echo "假"

[gudong@k8s-node01 ~]$ [[ $new_time < $old_time ]] && echo "真" || echo "假"

[gudong@k8s-node01 ~]$ [[ $new_time = $old_time ]] && echo "真" || echo "假"

[gudong@k8s-node01 ~]$ [[ $new_time -ge $old_time ]] && echo "真" || echo "假"
-bash: [[: 2022-05-11-08: value too great for base (error token is "08")

例子3:

[gudong@k8s-node01 ~]$ old_time=`date +"%Y-%m-%d-%H:%M:%S"`
[gudong@k8s-node01 ~]$ new_time=`date +"%Y-%m-%d-%H:%M:%S"`
[gudong@k8s-node01 ~]$ new_new_time=`date +"%Y-%m-%d-%H:%M:%S"`
[gudong@k8s-node01 ~]$ 
[gudong@k8s-node01 ~]$ 
[gudong@k8s-node01 ~]$ echo $old_time
2022-05-11-08:33:04
[gudong@k8s-node01 ~]$ echo $new_time
2022-05-11-08:33:10
[gudong@k8s-node01 ~]$ echo $new_new_time
2022-05-11-08:33:18
[gudong@k8s-node01 ~]$ 
[gudong@k8s-node01 ~]$ 
[gudong@k8s-node01 ~]$ [[ $new_time > $old_time && $new_time < $new_new_time ]] && echo "真" || echo "假"

[gudong@k8s-node01 ~]$ [[ $new_time > $old_time && $new_time > $new_new_time ]] && echo "真" || echo "假"

[gudong@k8s-node01 ~]$

四,linux shell串行执行

[gudong@k8s-node01 yyy]$ cat f1.sh 
echo `date +%H:%M:%S`
echo "第一次"
sh $1
#sleep 10
echo `date +%H:%M:%S`
echo "第二次"
[gudong@k8s-node01 yyy]$ 
[gudong@k8s-node01 yyy]$ cat f2.sh 
echo "f2"
sleep 10
echo "f2-2"
[gudong@k8s-node01 yyy]$ 
[gudong@k8s-node01 yyy]$ ./f1.sh f2.sh 
12:31:55
第一次
f2
f2-2
12:32:05
第二次
[gudong@k8s-node01 yyy]$

五,位置变量

前提须知:下面这种情况,位置参数是否生效,取决于第一个脚本有没有包括它。

[gudong@k8s-node01 var]$ cat 1.sh 
echo '第1次'
sh $1 $2
echo '第2次'
sh $1 $2 $3 
[gudong@k8s-node01 var]$ cat 2.sh 
echo '$1:' $1 
echo '$2:' $2
echo '$3:' $3 
[gudong@k8s-node01 var]$ ./1.sh 2.sh 10 20
1
$1: 10
$2:
$3:
2
$1: 10
$2: 20
$3:
[gudong@k8s-node01 var]$

1,例1

[gudong@k8s-node01 hh]$ cat 1.sh 
fun1()
{
echo this is 1.sh
}
fun1

sh $1 $2 
[gudong@k8s-node01 hh]$ cat 2.sh 
echo 哈哈哈哈
ss=$1
echo '$1' $1
echo '$2' $2
echo 'ss' $ss
[gudong@k8s-node01 hh]$ ./1.sh 2.sh 酷酷酷
this is 1.sh
哈哈哈哈
$1 酷酷酷
$2
ss 酷酷酷
[gudong@k8s-node01 hh]$ ./1.sh 2.sh 酷酷酷 给力给力
this is 1.sh
哈哈哈哈
$1 酷酷酷
$2
ss 酷酷酷


[gudong@k8s-node01 hh]$ ./2.sh 酷酷酷 给力给力
哈哈哈哈
$1 酷酷酷
$2 给力给力
ss 酷酷酷

2,例2

[gudong@k8s-node01 hh]$ cat 1.sh 
fun1()
{
echo this is 1.sh
}
fun1

script_name=$1
shift 1
sh $script_name "$@"
[gudong@k8s-node01 hh]$ cat 2.sh 
echo 哈哈哈哈
ss=$1
echo '$1' $1
echo '$2' $2
echo 'ss' $ss
[gudong@k8s-node01 hh]$ ./1.sh 2.sh 酷酷酷 给力给力
this is 1.sh
哈哈哈哈
$1 酷酷酷
$2 给力给力
ss 酷酷酷

3,例3

[gudong@k8s-node01 yyy]$ cat f3.sh 
echo $1 $2 $3
fun1(){
echo '$1:' $1
echo '$3:' $3
}
fun1 $3
echo "-----------"
sh f4.sh $3

[gudong@k8s-node01 yyy]$ cat f4.sh 
echo '$1:' $1
echo '$3:' $3
[gudong@k8s-node01 yyy]$ 
[gudong@k8s-node01 yyy]$ sh f3.sh 1 2 3
1 2 3
$1: 3
$3:
-----------
$1: 3
$3:

六,shift

[gudong@k8s-node01 hh]$ cat 3.sh 
echo $1 $2 $3
shift 2
echo $1

[gudong@k8s-node01 hh]$ sh 3.sh 1 2 3
1 2 3
3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值