学习笔记之shell脚本基础(一)

shell脚本是不需要编译的
shell脚本的目的,就是把繁琐的命令,重复的操作写入到脚本中
shell脚本规范以.sh结尾

[root@localhost ~]# vi 01.sh
[root@localhost ~]# cat 01.sh
#! /bin/bash
##This is a test script

touch 123.txt
mkdir 123
ls -l
cp 123.txt 123
ls -l
ls -l 123
[root@localhost ~]# chmod +x 01.sh 
[root@localhost ~]# ./01.sh
total 12
-rwxr-xr-x. 1 root root   99 Sep 26 14:15 01.sh
drwxr-xr-x. 2 root root    6 Sep 26 14:16 123
-rw-r--r--. 1 root root    0 Sep 26 14:16 123.txt
-rw-------. 1 root root 1217 Sep 17 16:38 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Desktop
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Documents
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Downloads
-rw-r--r--. 1 root root 1268 Sep 17 08:42 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Music
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Pictures
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Public
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Templates
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Videos
total 12
-rwxr-xr-x. 1 root root   99 Sep 26 14:15 01.sh
drwxr-xr-x. 2 root root   20 Sep 26 14:16 123
-rw-r--r--. 1 root root    0 Sep 26 14:16 123.txt
-rw-------. 1 root root 1217 Sep 17 16:38 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Desktop
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Documents
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Downloads
-rw-r--r--. 1 root root 1268 Sep 17 08:42 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Music
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Pictures
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Public
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Templates
drwxr-xr-x. 2 root root    6 Sep 17 08:46 Videos
total 0
-rw-r--r--. 1 root root 0 Sep 26 14:16 123.txt
[root@localhost ~]#

第一行的脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本;第二行的注释信息(#)是对脚本功能和某些命令的介绍信息,使得自己或他人在日后看到这个脚本内容时,可以快速知道该脚本的作用或一些警告信息
好的程序一半都是注释。
bash -x #查寻shell的执行过程

[root@localhost ~]# bash -x 02.sh 
+ touch 1212122.txt
[root@localhost ~]#

date	#输出时间
cal		#输出日历
cly -y	#输出一年的日历
echo $LANG	输出系统语言#
LANG=en	切换语言为英文
date +%Y	#全显年
data +%y	#年的后两位
date +%m	#显示数字模式下的月份
date +%M	#显示分
date +%d	#显示日期
date +%D	#显示完整日期
date +%H	#显示时
date +%h	#显示英文状态下的月份
date +%S	#显示秒
date +%s	
date +%T	#显示时间
date +%t	
date +%H-%M-%s	#以规定格式显示时间
date +%F	#显示完整日期
date +%w	
date +%W	#本周为本年份的第几周

计算器
安装:yum install bc
使用:

[root@localhost ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1+1
2
223/21
10

$0对应的是当前Shell脚本程序的名称,$#对应的是总共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,而$1、$2、$3……则分别对应着第N个位置的参数值

[root@localhost ~]# vi 03.sh
[root@localhost ~]# chmod +x 03.sh 
[root@localhost ~]# ./03.sh a b c d e f g h
当前脚本名称为./03.sh
总共有8个参数,分别是a b c d e f g h。
第1个参数为a,第5个为e。
[root@localhost ~]# cat 03.sh 
#!/bin/bash
echo "当前脚本名称为$0"
echo "总共有$#个参数,分别是$*。"
echo "第1个参数为$1,第5个为$5。"
[root@localhost ~]#

文件测试语句:
文件测试即使用指定条件来判断文件是否存在或权限是否满足等情况的运算符

-d 测试文件是否为目录类型
-e 测试文件是否存在
-f 判断是否为一般文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行

[root@localhost ~]# [ -d /etc/hosts ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -f /etc/hosts ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -w /etc/hosts ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -x /etc/hosts ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -r /etc/hosts ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -e /etc/hosts ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -e /etc/hostsweww ]
[root@localhost ~]# echo $?
1

逻辑测试语句:
在Shell终端中逻辑“与”的运算符号是&&,它表示当前面的命令执行成功后才会执行它后面的命令,“或”在Linux系统中的运算符号为||,表示当前面的命令执行失败后才会执行它后面的命令,“非”在Linux系统中的运算符号是一个叹号(!),它表示把条件测试中的判断结果取相反值。

[root@localhost ~]# [ -e /dev/cdrom ] && echo "Exist"
Exist
[root@localhost ~]# [ -e /dev/cdrom1 ] && echo "Exist"
[root@localhost ~]# [ $USER = root ] || echo "user"
[root@localhost ~]# [ $USER = l ] || echo "root"
root
[root@localhost ~]# [ $USER != root ] || echo "user"
user
[root@localhost ~]# [ $USER != l ] || echo "root"
[root@localhost ~]#

整数值比较语句:
整数比较运算符仅是对数字的操作

-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否等于或小于
-ge 是否大于或等于

[root@localhost ~]# [ 10 -eq 10 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 10 -eq 101 ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ 10 -ne 101 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 10 -gt 101 ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ 10 -lt 101 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 10 -le 101 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 10 -ge 101 ]
[root@localhost ~]# echo $?
1
[root@localhost ~]#

字符串比较语句:
字符串比较语句用于判断测试字符串是否为空值,或两个字符串是否相同。

= 比较字符串内容是否相同
!= 比较字符串内容是否不同
-z 判断字符串内容是否为空

[root@localhost ~]# echo $LANG
en_US.UTF-8
[root@localhost ~]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US
[root@localhost ~]# [ $LANG = "en.US" ] && echo "Not en.US"
[root@localhost ~]#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值