linux shell

创建第一个shell 脚本并执行
1.用文本编辑器编写一个shell脚本:

vim test.sh 

2.在脚本里面输入以下语句

#!/bin/bash
echo "Hello World !"

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
echo 命令用于向窗口输出文本
我试了一下把第一行删掉也可以执行?莫非是有设定默认的解释器
3.退出文本编辑器
4.使脚本具有执行权限

chmod +x test.sh

5.执行脚本
第一种方式

./test.sh

第二种方式

/bin/sh test.sh

for 循环

vim test2.sh
输入:
for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

运行效果
在这里插入图片描述

shell date命令

语法

date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

-d datestr : 显示 datestr 中所设定的时间 (非系统时间)

例子

# date
三 5月 12 14:08:12 CST 2010
# date '+%c' 
2010年05月12日 星期三 14时09分02秒
# date '+%D' //显示完整的时间
05/12/10
# date '+%x' //显示数字日期,年份两位数表示
2010年05月12日
# date '+%T' //显示日期,年份用四位数表示
14:09:31
# date '+%X' //显示24小时的格式
14时09分39秒

时间方面:

% : 印出 %
%n : 下一行
%t : 跳格
%H : 小时(00…23)
%I : 小时(01…12)
%k : 小时(0…23)
%l : 小时(1…12)
%M : 分钟(00…59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00…61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期方面:

%a : 星期几 (Sun…Sat)
%A : 星期几 (Sunday…Saturday)
%b : 月份 (Jan…Dec)
%B : 月份 (January…December)
%c : 直接显示日期与时间
%d : 日 (01…31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001…366)
%m : 月份 (01…12)
%U : 一年中的第几周 (00…53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0…6)
%W : 一年中的第几周 (00…53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000…9999)

例子

$ date +%Y%m%d
output:20210822

date [ -d datestr ]

显示datestr的时间,而不是显示当前时间
-d, --date=STRING display time described by STRING, not ‘now’
例如

$date -d 20210824
output: Tue Aug 24 00:00:00 CST 2021
想换一种输出形式
$date -d 20210824 +%Y%m%d
output:20210824

输出当前日期的前一天

假设当前日期为20210822

$ date --date="-1 day" +%Y%m%d
或者
$ date -d"-1 day" +%Y%m%d

在这里插入图片描述

输出当前日期的前一个月

$ date --date="-1 month" +%Y%m%d
output:20210722
或者
$ date -d"-1 month" +%Y%m%d
output:20210722
当前时间为20210822
$date -d now +%Y%m%d  //显示现在的日期
output:20210822

$date +%Y%m
output:202108

$date -d"1month" +%Y%m
output: 202109

$date -d "1month" +%Y%m
output:202109

$date  --date=”-1 day”   +%Y%m%d //显示前一天的日期
output:20210821

$date  --date=”+1 month” +%Y%m%d //显示下一月的日期
output:20210922

$date  --date=”+1 year”  +%Y%m%d //显示下一年的日期
output:20220822

$date -d 8Aug +%Y%m%d  //指定8月8日
output:20210808
#如果不知道月份的缩写可以先用↓来判断
$ date -d"20210502"
output:Sun May  2 00:00:00 CST 2021

$date -d "20210701 +1 day" +%Y%m%d //显示7月1日后一天的日期
output:20210702

for 循环

实例1

错误

$vim testv6.sh
在testv6.sh里面:
for (i=1;i<=3;i++) #不可以这么写
do
echo "$i"
done

$chmod +x testv6.sh
$./testv6.sh
output:syntax error near unexpected token `('
output:`for (i=1;i<=31;i++)'

$vim testv6.sh
在testv6.sh里面:
for ((i=1;i<=3;i++)) #应该这么写
do
echo "$i"
done

$chmod +x testv6.sh
$./testv6.sh
output:
1
2
3

实例2

$vim testv6.sh
在testv6.sh里面:
for ((i=1;i<=3;i++)) 
do
a=$i-1
b=$i-2
c=$i-3
echo "$a"
echo "$b"
echo "$c"
done

$chmod +x testv6.sh
$./testv6.sh
output: #显然不是我们想要的
1-1
1-2
1-3
2-1
2-2
2-3
3-1
3-2
3-3

改成这样也不行
$vim testv6.sh
在testv6.sh里面:
for ((i=1;i<=3;i++))
do
a=(($i-1)
b=($i-2)
c=($i-3)
echo "$a"
echo "$b"
echo "$c"
done

$chmod +x testv6.sh
$./testv6.sh
output: #显然不是我们想要的
1-1
1-2
1-3
2-1
2-2
2-3
3-1
3-2
3-3

使用(())
$vim testv6.sh
在testv6.sh里面:
for ((i=1;i<=3;i++))
do
a=$(($i-1))
b=$(($i-2))
c=$(($i-3))
echo "$a"
echo "$b"
echo "$c"
done

$chmod +x testv6.sh
$./testv6.sh
output:
0
-1
-2
1
0
-1
2
1
0

实例3 用for循环输出7月每一天

m=7
until [ $m == 8 ]
do

字符串

截取子串

vim test.sh
test.sh里面:
base="20210701"
echo "当前月份:${base:5:1}"
echo "当前月份:${base:5:6}" #不能这么写

chmod +x test.sh
./test.sh
output:
7 #对应"当前月份:${base:5:1}"
701   #"当前月份:${base:5:6}" 

实例3 输出某个月的每一天

$vim test.sh
test.sh里面:
until [ $add = "20210731" ]
do
    base=$"20210701"
    add=`date -d "$base +$i day" +%Y%m%d`
    ((i++))
    echo "$add"
done

$chmod +x test.sh
output:
20210701
20210702
20210703
20210704
20210705
20210706
20210707
20210708
20210709
20210710
20210711
20210712
20210713
20210714
20210715
20210716
20210717
20210718
20210719
20210720
20210721
20210722
20210723
20210724
20210725
20210726
20210727
20210728
20210729
20210730
20210731

查看python安装目录

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值