學(xué)習(xí)筆記day10C語言:高級命令與shell-創(chuàng)新互聯(lián)

1 寫一個時鐘

創(chuàng)新互聯(lián)建站是一家專業(yè)提供庫倫企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都做網(wǎng)站H5建站、小程序制作等業(yè)務(wù)。10年已為庫倫眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
#!/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月的天數(shù)判斷
		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月的天數(shù)判斷
		if [ $day -eq 31 ]
		then
			day=1
			((month++))
		fi
	fi
	if [ $month -eq 2 ]
	then            #對于2月的天數(shù)判斷    閏年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命令來進(jìn)行壓縮與解壓縮

對于這三種格式,在壓縮率上 .xz>.gz>.bz2,壓縮速度 .xz>.gz>.bz2
壓縮和解壓縮這兩種操作都會替換源文件

歸檔的對象是目錄
通常使用tar命令進(jìn)行歸檔
例如tar -cvf main.tar main    將main打包成main.tar
	其中c表示創(chuàng)建歸檔文件,v表示顯示過程,f表示后面跟文件名

可以在使用tar的同時將目錄歸檔的同時壓縮成文件。
	使用-z: 壓縮成gzip格式
-j: 壓縮成bzip2格式
-J: 壓縮成xz格式
2 什么是shell腳本
Shell是一種腳本語言,那么,就必須有解釋器來執(zhí)行這些腳本,常見的腳本解釋器有:
bash:是Linux標(biāo)準(zhǔn)默認(rèn)的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的縮寫,內(nèi)部命令一共有40個。
sh: 由Steve Bourne開發(fā),是Bourne Shell的縮寫,sh 是Unix 標(biāo)準(zhǔn)默認(rèn)的shell。
另外還有:ash、 csh、 ksh等。
3 shell腳本的使用
1.文件的命名(結(jié)尾是.sh) 
	vim 01test.sh
2.腳本的第一行 
	#!/bin/bash:  標(biāo)識解析此腳本的shell是bash 
3.腳本文件是不需要編譯的,直接由命令行解析器解析
4.執(zhí)行腳本
	./01test.sh  (腳本需要有可執(zhí)行權(quán)限)-->chomd a+x 01test.sh
	bash 01test.sh
	source 01test.sh
5.三種執(zhí)行方式的區(qū)別
	1)./執(zhí)行腳本的時候需要可執(zhí)行權(quán)限,而bash和source都不需要可執(zhí)行權(quán)限
	2)./和bash解析腳本的時候會新開子終端,在子終端中解析,將解析的結(jié)果返回到當(dāng)前終端,source是直接在當(dāng)前終端解析。
4 shell腳本中的變量
1.變量不需要定義
2.變量沒有對應(yīng)的類型
3.變量賦值的時候直接寫=(等號前后不能有空格)
4.在shell腳本中,所有的變量被賦的值都認(rèn)為是字符串
5.賦值的區(qū)別如下
		var1=123        -->字符串之間不能有空格
		var1='123 456'  -->可以有空格
		var2="123 $var1"  -->可以有空格,可以調(diào)用新的變量
6.變量的引用
		$var1  ${var1}
7.使用echo來打印變量
	echo $var1
8.通過位置變量可以進(jìn)行命令行的傳遞參數(shù)
		$0  //腳本的名字
		$1 $2....$9 ${10}...${n}  //參數(shù)對應(yīng)位置的字符串
		$@或$*   //命令行傳遞的所有的參數(shù)(腳本名除外)
		$#    //命令行參數(shù)的個數(shù)
9.
	unset 變量名  //清除變量的值
	readonly 變量 //標(biāo)識這個變量是只讀的
5 shell中的運(yùn)算
shell中的變量被賦的值都是字符串,所以它不能夠進(jìn)行算術(shù)運(yùn)算,如果想執(zhí)行算術(shù)運(yùn)算必須使用特殊的標(biāo)識來完成。
	(()) 整數(shù)運(yùn)算
	$[]  整數(shù)運(yùn)算
	expr 整數(shù)運(yùn)算,字符串的運(yùn)算
6 (())的使用
(($va1 + $var2))
	((va1+ var2))   #在(())內(nèi)部變量可以有$,也可以沒有$符號,在運(yùn)算符前后可以加空格,也可以沒有空格
	
	sum=$((var++))  #如果要將一個表達(dá)式的結(jié)果賦值給變量,需要在(())前加$符號
	
	tt=$((表達(dá)式1,表達(dá)式2,表達(dá)式3,...))#所有的表達(dá)式都會參與運(yùn)算最后一個表達(dá)式的結(jié)果賦值給tt變量
在(())中可以做復(fù)雜的運(yùn)算
for((i = 0; i< 100;i++))
	{((sum+=i))
	}
	echo $sum
7 $[]的使用
var1=12
	ret=$[var1++]
	echo $[var1++]  #s[]一定需要有變量去承接結(jié)果,如果不使用變量去接收結(jié)果,就必須使用echo輸出
	
	ret=$[var2 + var3]  #在$[]里面,可以有空格,也可以沒有空格,可以有$,也可以沒有$
	#在$[]中不允許做復(fù)雜的運(yùn)算,比如for循環(huán)

	ret=$[var1++,var2++,3**5]
	echo $ret   #最后一個表達(dá)式的結(jié)果解釋整個表達(dá)式的結(jié)果
8 expr的使用
var1=12
	var2=13
	expr $var1 + $var2
[1]expr在運(yùn)算完之后結(jié)果會自動顯示
[2]expr在使用的變量的時候,變量前一定要有$符號
[3]運(yùn)算符前后要加空格,如果不加空格,會出錯
	sum=`expr $var1 + $var2`
[4]如果要將expr的運(yùn)算的結(jié)果給新的變量,需要使用置換
	mul=`expr 6 \* 3`
[5]expr在進(jìn)行*運(yùn)算的時候,如果不使用轉(zhuǎn)義符號,它認(rèn)為是通配符號,不能進(jìn)行乘法運(yùn)算
	注:var1=`ls`
		var1=$(ls)
[6] 使用expr求字符串的長度
	expr length $var2  #var2變量中不能有空格,否則會出現(xiàn)語法錯誤
[7] 使用expr在源字符串中查找子字符的位置
	expr index $var1 "123"  #從左往右進(jìn)行匹配,返回一個符號字符的位置
[8]提取字符串
	expr substr $var1 起始位置 提取的長度
[9] 字符串匹配
	expr match $var1 "abc"  #從左往右匹配,只要有任意一個匹配不上,則返回0,否則返回匹配上的個數(shù)
9 shell中的if語句
if [ 判斷條件 ]  #--->這里 []可以寫成test
then
    #if成立執(zhí)行的語句
fi
   # if不成立執(zhí)行的語句
 
if [ 判斷條件1 ] # --->這里 []可以寫成test
then
    #判斷條件1成立執(zhí)行的語句
elif [ 判斷條件2 ]
then  
    #判斷條件2成立執(zhí)行的語句
else
    #上述都不成立執(zhí)行的語句
fi
10 shell中對數(shù)字的判斷
-eq  等于
-ne  不等于
-gt  大于
-ge  大于等于
-lt  小于
-le  小于等于

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

分享文章:學(xué)習(xí)筆記day10C語言:高級命令與shell-創(chuàng)新互聯(lián)
鏈接分享:http://m.kartarina.com/article10/ccgigo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站外貿(mào)網(wǎng)站建設(shè)小程序開發(fā)網(wǎng)站改版動態(tài)網(wǎng)站網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
主站蜘蛛池模板: 少妇仑乱A毛片无码| 亚洲AV无码精品色午夜果冻不卡 | 亚洲一级特黄大片无码毛片| 丰满少妇被猛烈进入无码| 本道天堂成在人线av无码免费| 熟妇无码乱子成人精品| 亚洲AV无码成人精品区日韩| 中文字幕久久精品无码| 无码人妻精品一区二区蜜桃| 中文国产成人精品久久亚洲精品AⅤ无码精品| 伊人久久综合精品无码AV专区| 无码夜色一区二区三区| 人妻夜夜添夜夜无码AV| 中文字幕在线无码一区| 无码无套少妇毛多18PXXXX| 无码人妻AV一二区二区三区 | 亚洲av片不卡无码久久| 日韩精品无码视频一区二区蜜桃| 无码一区二区三区AV免费| AAA级久久久精品无码片| 国产精品视频一区二区三区无码| 久久国产精品成人无码网站| 免费A级毛片av无码| 亚洲大尺度无码专区尤物| 久久av高潮av无码av喷吹| 日韩专区无码人妻| 亚洲欧洲免费无码| 在线观看成人无码中文av天堂| 久久午夜夜伦鲁鲁片免费无码| 久久久久久av无码免费看大片| 无码任你躁久久久久久| 成人无码区免费视频观看 | 日韩人妻无码精品一专区| 久久亚洲精品无码观看不卡| 无码办公室丝袜OL中文字幕| 亚洲成a人无码亚洲成av无码| 中文字幕人成无码免费视频| 亚洲国产精品无码久久98| 亚洲av无码片vr一区二区三区| 国产成人无码免费看视频软件 | 18禁免费无码无遮挡不卡网站|