学习笔记day10C语言:高级命令与shell-创新互联

1 写一个时钟

创新互联建站是一家专业提供库伦企业网站建设,专注与做网站、成都做网站H5建站、小程序制作等业务。10年已为库伦众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
#!/bin/bash
year=2022
month=12
day=15
hour=11
min=22
sec=15
flag=1
for((;;)){((sec++))
	#((day++))
	sleep 1
	if [ $sec -eq 60 ]
	then
		sec=0
		((min++))
	fi
	if [ $min -eq 60 ]
	then
		min=0
		((hour++))
	fi
	if [ $hour -eq 24 ]
	then
		hour=0
		((day++))
	fi
	if (( year%4==0 && year%100!=0 )) || (( year%400==0 ))
	then
		flag=1  #是闰年
	else
		flag=0   #不是闰年
	fi
	if [ $month -eq 1 -o $month -eq 3 -o $month -eq 5 -o $month -eq	7 -o $month -eq 8 -o $month -eq 10 -o $month -eq 12 ]
	then        		#对于1、3、5、7、8、10、12月的天数判断
		if [ $day -eq 32 ]
		then
			day=1
			((month++))
		fi
	fi
	if [ $month -eq 4 -o $month -eq 6 -o $month -eq 9 -o $month -eq 11 ]
	then            #对于4、6、9、11月的天数判断
		if [ $day -eq 31 ]
		then
			day=1
			((month++))
		fi
	fi
	if [ $month -eq 2 ]
	then            #对于2月的天数判断    闰年29天    平年28天
		if [ $flag -eq 1 ]
		then
			if [ $day -eq 30 ]
			then
				day=1
				((month++))
			fi
		fi
		if [ $flag -eq 0 ]
		then
			if [ $day -eq 29 ]
			then
				day=1
				((month++))
			fi
		fi
	fi
	if [ $month -eq 13 ]
	then
		month=1
		((year++))
	fi
	printf "%d-%02d-%02d %02d:%02d:%02d\r" $year $month $day $hour $min $sec
}
1 压缩与打包
压缩的对象是文件
在ubuntu中,常用的压缩文件格式有.gz、.bz2、.xz等
分别使用 gzip/gunzip 、bzip2/bunzip2 、xz/unxz命令来进行压缩与解压缩

对于这三种格式,在压缩率上 .xz>.gz>.bz2,压缩速度 .xz>.gz>.bz2
压缩和解压缩这两种操作都会替换源文件

归档的对象是目录
通常使用tar命令进行归档
例如tar -cvf main.tar main    将main打包成main.tar
	其中c表示创建归档文件,v表示显示过程,f表示后面跟文件名

可以在使用tar的同时将目录归档的同时压缩成文件。
	使用-z: 压缩成gzip格式
-j: 压缩成bzip2格式
-J: 压缩成xz格式
2 什么是shell脚本
Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有:
bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。
sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。
另外还有:ash、 csh、 ksh等。
3 shell脚本的使用
1.文件的命名(结尾是.sh) 
	vim 01test.sh
2.脚本的第一行 
	#!/bin/bash:  标识解析此脚本的shell是bash 
3.脚本文件是不需要编译的,直接由命令行解析器解析
4.执行脚本
	./01test.sh  (脚本需要有可执行权限)-->chomd a+x 01test.sh
	bash 01test.sh
	source 01test.sh
5.三种执行方式的区别
	1)./执行脚本的时候需要可执行权限,而bash和source都不需要可执行权限
	2)./和bash解析脚本的时候会新开子终端,在子终端中解析,将解析的结果返回到当前终端,source是直接在当前终端解析。
4 shell脚本中的变量
1.变量不需要定义
2.变量没有对应的类型
3.变量赋值的时候直接写=(等号前后不能有空格)
4.在shell脚本中,所有的变量被赋的值都认为是字符串
5.赋值的区别如下
		var1=123        -->字符串之间不能有空格
		var1='123 456'  -->可以有空格
		var2="123 $var1"  -->可以有空格,可以调用新的变量
6.变量的引用
		$var1  ${var1}
7.使用echo来打印变量
	echo $var1
8.通过位置变量可以进行命令行的传递参数
		$0  //脚本的名字
		$1 $2....$9 ${10}...${n}  //参数对应位置的字符串
		$@或$*   //命令行传递的所有的参数(脚本名除外)
		$#    //命令行参数的个数
9.
	unset 变量名  //清除变量的值
	readonly 变量 //标识这个变量是只读的
5 shell中的运算
shell中的变量被赋的值都是字符串,所以它不能够进行算术运算,如果想执行算术运算必须使用特殊的标识来完成。
	(()) 整数运算
	$[]  整数运算
	expr 整数运算,字符串的运算
6 (())的使用
(($va1 + $var2))
	((va1+ var2))   #在(())内部变量可以有$,也可以没有$符号,在运算符前后可以加空格,也可以没有空格
	
	sum=$((var++))  #如果要将一个表达式的结果赋值给变量,需要在(())前加$符号
	
	tt=$((表达式1,表达式2,表达式3,...))#所有的表达式都会参与运算最后一个表达式的结果赋值给tt变量
在(())中可以做复杂的运算
for((i = 0; i< 100;i++))
	{((sum+=i))
	}
	echo $sum
7 $[]的使用
var1=12
	ret=$[var1++]
	echo $[var1++]  #s[]一定需要有变量去承接结果,如果不使用变量去接收结果,就必须使用echo输出
	
	ret=$[var2 + var3]  #在$[]里面,可以有空格,也可以没有空格,可以有$,也可以没有$
	#在$[]中不允许做复杂的运算,比如for循环

	ret=$[var1++,var2++,3**5]
	echo $ret   #最后一个表达式的结果解释整个表达式的结果
8 expr的使用
var1=12
	var2=13
	expr $var1 + $var2
[1]expr在运算完之后结果会自动显示
[2]expr在使用的变量的时候,变量前一定要有$符号
[3]运算符前后要加空格,如果不加空格,会出错
	sum=`expr $var1 + $var2`
[4]如果要将expr的运算的结果给新的变量,需要使用置换
	mul=`expr 6 \* 3`
[5]expr在进行*运算的时候,如果不使用转义符号,它认为是通配符号,不能进行乘法运算
	注:var1=`ls`
		var1=$(ls)
[6] 使用expr求字符串的长度
	expr length $var2  #var2变量中不能有空格,否则会出现语法错误
[7] 使用expr在源字符串中查找子字符的位置
	expr index $var1 "123"  #从左往右进行匹配,返回一个符号字符的位置
[8]提取字符串
	expr substr $var1 起始位置 提取的长度
[9] 字符串匹配
	expr match $var1 "abc"  #从左往右匹配,只要有任意一个匹配不上,则返回0,否则返回匹配上的个数
9 shell中的if语句
if [ 判断条件 ]  #--->这里 []可以写成test
then
    #if成立执行的语句
fi
   # if不成立执行的语句
 
if [ 判断条件1 ] # --->这里 []可以写成test
then
    #判断条件1成立执行的语句
elif [ 判断条件2 ]
then  
    #判断条件2成立执行的语句
else
    #上述都不成立执行的语句
fi
10 shell中对数字的判断
-eq  等于
-ne  不等于
-gt  大于
-ge  大于等于
-lt  小于
-le  小于等于

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页名称:学习笔记day10C语言:高级命令与shell-创新互联
网站URL:http://scyanting.com/article/ccgigo.html