第一天的學習就遇到了我最為頭疼的內(nèi)容--二進制和十進制
作為一個純文科出身的我最頭疼的就是數(shù)字,就是運算,即便他們說那是簡單的,在我看來還是難笔宿,不知道什么時候能夠不再為此頭疼,肯定需要找個時間來補一下這方面的知識的窗宇。
今天老師講的主要是運算命令和控制命令措伐,還留了幾道作業(yè)特纤,當時就懵逼了军俊,不知如何下手,到現(xiàn)在為止我的能力僅限于照著別人敲好的代碼再敲一遍捧存,讓我自己寫是寫不出的粪躬,就相當于沒有自己的思路,不知道怎么開始昔穴,老師講的也很直接的說了镰官,要是做不了就把白天的內(nèi)容復習一遍,待會過一遍今天的內(nèi)容再看一下能否做作業(yè)或者能夠做到什么程度吧吗货。
老師接著昨天的命令給我們繼續(xù)講的:
8>echo命令的注意點
1)-e:代表開啟轉(zhuǎn)義泳唠,讓他認識轉(zhuǎn)義字符
2)轉(zhuǎn)義字符
\c:是一個轉(zhuǎn)義字符,原先是換行宙搬,加了之后可以不換行
\n:是一個換行轉(zhuǎn)義字符
\t:是一個轉(zhuǎn)義字符笨腥,相當于tab鍵
3)echo后面叫"",''勇垛,不加
'':不能達到取值的效果脖母,不推薦使用
"":上面的缺陷都可以避免
4)如果使用sh xx.sh運行的方式,不需要開啟轉(zhuǎn)義闲孤,echo "hello\tword"
如果./xx.sh運行谆级,需要開啟轉(zhuǎn)義,echo -e
9>字符串的相關(guān)操作
1)字符串長度計算
示例代碼:
1 string=“hello”
2 length=${#string}
3 echo "${length}"
2)字符串的拼接
5 string1=“word”
6 string3=“${string} ${string1}”
7 echo "${string3}"
3)字符串的截取
10 string4="nihao"
11 string5=${string4:2:3}
12 echo "${string5}"
10>
%d:是一個占位符讼积,是替整數(shù)類型的數(shù)據(jù)所占的位置
%c:是一個占位符肥照,是替單個字母所占的位置
%f:是一個占位符,是替小數(shù)類型的數(shù)據(jù)所占的位置
%s:是一個占位符勤众,是替字符串占的位置
%md
%mc
%ms
%m.nf
如果m<=n+1+整數(shù)的實際數(shù)的位數(shù)舆绎,m沒有意義,相當于沒寫
如果m>n+1+整數(shù)的實際數(shù)的位數(shù)决摧,左邊用空格補全亿蒸,默認是右對齊凑兰,如果想左對齊,加-:%-m.nf
注意點:任何數(shù)據(jù)類型都可以使用%s輸出边锁,但是字符串類型不能使用%d,%f,%c輸出
11姑食,整數(shù)運算
算數(shù)運算:+ ? ?- ? ? \* ? ?/ ? ? % ? ? ++ ? ?——
簡單案例
1 num1=1
2 num2=2
3 num3=`expr ${num1}+${num2}`
4 echo "${num3}"
后綴++
先賦值,后進行自加1
num1=4
let num2=num1++
echo "num1=${num1},num2=${num2}"
結(jié)果:num1=5茅坛,num2=4
后綴--
先賦值音半,后進行自減1
num1=4
let num2=num1--
echo "num1=${num1},num2=${num2}"
結(jié)果:num1=3,num2=4
前綴++
先進行自加1贡蓖,后賦值
num1=4
let num2=++num1
echo "num1=${num1},{num2}=${num2}"
結(jié)果:num1=5,num2=5
前綴--
先進行自減1曹鸠,后賦值
num1=4
let num2=--num1
echo "num1=${num1},num2=${num2}"
結(jié)果:num1=3,num2=3
如果上面的expr不好用斥铺,可以用$(())
關(guān)系運算
\>? \<? \>=? \<=? \=? =? \!=? !=? ==? \==
關(guān)系運算產(chǎn)生結(jié)果是一個邏輯結(jié)果彻桃,邏輯結(jié)果有1和0
0代表這個邏輯錯誤的,1代表是這個邏輯是正確的
邏輯運算符
&&:事件1 并且 事件2
如果事件1 并且 事件2成立晾蜘,整個事件才成立邻眷;否則整個事件就不成立
代碼示例:
1 read num
2
3 #if [ `expr ${num} % 3` == 0 ]&&[ `expr ${num} % 5` == 0 ]
4 if [[ `expr ${num} % 3` == 0 && `expr ${num} % 5` == 0 ]]
5 then
6 ? ? ? echo "3,5的倍數(shù)"
7 else
8 ? ? ? echo "就不是3,5的倍數(shù)"
9 fi
||:事件1 或 事件2
只要有一個事件成立,整個事件就成立
3 #if [ `expr ${num} % 3` == 0 ]||[ `expr ${num} % 5` == 0 ]
4 if [[ `expr ${num} % 3` == 0 || `expr ${num} % 5` == 0 ]]
字符串運算符
=剔交、!=肆饶、
-z $str:判斷字符串是否存在,或者字符串是否都為空格
$str:判斷字符串不為空
1)示例代碼
1 string="123"
2 string1="123"
3 if [ ${string} != ${string1} ]
4 then
5 ? ? ?echo "不相等"
6 else
7 ? ? ?echo "相等"
8 fi
2)示例代碼
1 string=" "
2 if [ -z ${string} ]
3 then
4 ? ? ?echo "為空"
5 else
6 ? ? ?echo "非空"
7 fi
8
9 string1="xxx"
10 if [ $string1 ]
11 then
12? ? ? echo "非空"
13 else?
14? ? ? echo "為空"
15 fi
文件運算符
-e:exist判斷文件是否存在
-d:directory判斷文件是否是目錄文件
-f:file判斷一個文件是否是普通文件
-r:read判斷當前文件是否有讀取權(quán)限
-w:write判斷文件是否有寫入權(quán)限
-x:判斷文件是否有可執(zhí)行權(quán)限
1)代碼示例
1 if [ -f ~/practice1 ]
2 then
3 ? ? ? echo "是目錄"
4 else
5 ? ? ? echo "不是"
6 fi
2)示例代碼
8 if [ -x ./19.sh ]
9 then
10 ? ? echo "有執(zhí)行權(quán)限"
11 else
12 ? ? ? echo "沒有"
13 fi
12``和${}的作用:取出結(jié)果集岖常,可以是命令的結(jié)果集驯镊,還可以是運算的結(jié)果
13、let關(guān)鍵字
1 num1=1
2 num2=2
3 let num3=num1+num2
4 echo "${num3}"
13,輸入一個變量
實例代碼
read num
printf "${num}"
注意點:輸入多個值的時候竭鞍,盡量使用
read num
read num1
14板惑,三大流程控制
1>順序流程控制
2>條件流程控制
1)
if [ 條件 ]
then
語句體
fi
2)
if [ 條件 ]
then
語句體
else
語句體
fi
3)
if [ 條件 ]
then
語句體
elif
then
語句體
elif
then
語句體
else
語句
fi
注意點:
1)[]左右兩邊都要有空格
2)else可以沒有,也可以有笼蛛,但是必須放在最后面
>:gt
>=:-ge
<:-lt
<=:-le
==:-eq
!=:-ne
g:grater
t:than
l:less
e:equal
eq:equal
n:not
case語句:
case變量 in
值1)
語句體
;;
值2)
語句體
;;
值3)
語句體
;;
值*)
語句體
;;
esac
注意點:*)可以沒有洒放,如果有必須寫在最后面,*)代表通配任何內(nèi)容的值
/*
輸入兩個整數(shù)滨砍,再輸入一個運算符往湿,根據(jù)運算符的不同對兩個數(shù)進行計算,輸出運算結(jié)果惋戏,用case語句實現(xiàn)
*/
3>循環(huán)流程控制
while [ 條件 ]
do
語句體
done
練習:
1)求1~100的偶數(shù)和领追,輸出
晚上作業(yè):
1>寫一個命令求階乘或是求和,比如說命令運行:
./xx.sh 6! 如果是這樣運行就執(zhí)行階乘6x5x4x3x2x1
./xx.sh 6+ 如果是這樣運行就執(zhí)行階乘6+5+4+3+2+1
./xx.sh -s 6
./xx.sh -f 6
./xx.sh -sf 6
2>打印菱形响逢,用while
? ? ? ? ? ? ? ? ? *
? ? ? ? ? ? ? ? ?***
? ? ? ? ? ? ? ?******
? ? ? ? ? ? ?*********
? ? ? ? ? ? ? ?******
? ? ? ? ? ? ? ? ?***
? ? ? ? ? ? ? ? ? ?*
3>使用while循環(huán)打印如圖所示的直角三角形
*
**
***
****
*****
******
4>
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
······
1x9=9 2x9=18 3x9=27 4x9=36 ······9x9=81
5>創(chuàng)建當天的文件夾
myfile -y ~/practice/2017/
myfile -m ~/practice/2017/01
myfile -d ~/practice/2017/01/0104
~/practice/2017/01/0104? #年份文件/月份文件/當天日期的文件夾
拿到年:date +%Y
拿到月:date +%m
拿到日:date +%d
15绒窑、環(huán)境變量
$#:指的是shell命令參數(shù)的個數(shù),不算命令本身
$0:代表命令本身
$1:代表命令第一個參數(shù)值
$2:代表命令第二個參數(shù)值
···
$n:代表命令第n個參數(shù)值
如果n>=10舔亭,必須要用${n}去取值
怎么自己寫一個解析xx.sh文件的腳本
思路:
1>判斷執(zhí)行哪個文件
2>參數(shù)不能太多
3>判斷該文件是否存在
4>判斷是否是普通文件
5>判斷該文件是否是以.sh結(jié)尾的文件
6>chmod +x xx.sh
7>./xx.sh
8>將這個命令全局有效
如果 賬號密碼不為空
就
把信息發(fā)信給服務器
否則
提示不能為空
老師一天講了那么多些膨,還沒開始消化呢蟀俊,又布置那么多作業(yè),掃了一眼作業(yè)發(fā)現(xiàn)無從下手订雾,只能默默整理筆記了肢预,希望老師明天能夠帶著我們完成這些作業(yè)