第三課 Linux邏輯運算符

*邏輯運算符

  事件1&&事件2 :事件1 并且事件2成立,整個事件才成立
  事件1 ||事件2 :事件1 或者事件2 成立,  整個事件才成立   
  事件1 -a事件2:and啊:
  事件1  -o事件2 :or

示例;
2echo "請輸入一個數(shù)"
3readonly num
4 #if [[$(expr $num%3)==0]||expr $num%5==0]]
if[$(expr $num%3)==0]||[expr $num%5==0]
5then
6echo"3或5的倍數(shù)"
7else
8echo"不是3或5的倍數(shù) "
9fi

例題 判斷輸入的年份是否石閏年
>能被4整除 并且不能被100 整除
>能被400整除
1echo"請輸入年份"
2read year
3if[expr $year %4==0 -a expr $year %100!=0] || [ expr $year % 400==0]
4then
5 echo"閏年"
6else
7 echo"平年"
8fi

**case分支

case 變量 in
值1)
代碼
;;
值2)
代碼
;;
值3)
代碼
;;
.......
;;
case
用法分析:根據(jù)變量存儲的值和下面的值相比較,如果相等,那么就執(zhí)行相應的只里面的代碼

輸入兩個在整數(shù),再輸入一個運算符,根據(jù)運算符的輸入對兩個數(shù)進行運算.使用case語句完成

**while循環(huán)
while[條件]
do
循環(huán)體
done
案例分析
4 i=1
5sum=0
6while [ $i le 100 ]
7do
8 let sum=sum+i
9 let i++
10done
11echo "sum=${sum}"
用法分析:當while后面的條件成立,就執(zhí)行do和done 之間的語句,執(zhí)行玩這個語句之后再回過頭去判斷while后面的條件是否成立,如果條件成立,就繼續(xù)執(zhí)行后面的語句,直到條件不成立,循環(huán)退出

例題

**




**環(huán)境變量
$#:代表可執(zhí)行命令后面的參數(shù)個數(shù)
$0:代表可執(zhí)行命令本身
$1:代表可執(zhí)行命令后后面的第一個參數(shù)
$2:代表可執(zhí)行命令后后面的第2個參數(shù)
....

a寫一個shell腳本,./xx.sh 12!

思路分析
1>拿到第一個參數(shù)的值12!
2>通過字符串截取拿到12
3>while循環(huán)求乘機
4>輸出成績

b 寫一個shell解析器.解析shell腳本,要考慮到文件是否存在,該文件是否普通文件等各種問題
1>參數(shù)的個數(shù)
2>如果是一個參數(shù)在進行處理
3>判斷文件是否存在
4>判斷該文件是否是普通文件
5>給文件加上執(zhí)行權
6>運行文件
7>讓命令全局有效
mv 33.sh myrun
sudo cp myrun /bin/
excuteFile()
{
file+$1
echo "$file"
chmod +x $file
./$file
}

compareWithSh()
{
file=$1
length=${#file} #整個文件名的長度
let start=length-2
suffix=${file:start:2}
if [ $suffix = "sh" ]
then
echo"1"
else
echo"0"
fi
}
if [ $# -le 0 ]
then
echo "wainng:run what????"
file=ls./
for file in ${files}
do
if [ compareWithSh $file==1 ]
then
printf "$file\t"
fi
done
printf "\n"
printf "select file to excute:"
read exefile
excuteFile $exefile
elif [ $# -eq 1 ]
then
file=$1
if [ -e ./${file} ]
then
if [ -f ./${file} ]
then
if [ compareWithSh $file==1 ]
then
excuteFile $file
else
echo "error:${file}dose have sh suffix"
fi
else
echo "error:${file} is not normal file"
fi
else
echo "warning:${file} does not exsit"
fi
else
echo"error:too much arguments"
fi

**for 循環(huán)
語法
for 變量 in參數(shù)列表
do
循環(huán)體
done

例如
1for value in 1 2 3 4
2do
3 echo "$value"
4done

用法分析: 依次用參數(shù)列表里面的值對變量進行賦值.每次賦值之后,執(zhí)行do和done之間的代碼,直到參數(shù)列表沒有參數(shù)為變量賦值為止

***數(shù)組
1>數(shù)組整體初始化
arr=(1 2 3 4 5)
2>訪問數(shù)組元素

0下標代表都一個袁術

echo "0下標的元素=${arr[0]}"
echo "整個數(shù)組里面的值=${arr[@]}"
echo "整個數(shù)組里面的值${arr=[*]}"
3>數(shù)組單個賦值
arr1[0]=1
arr1[1]="hello"
arr1[2]="c"
echo "arr1=${arr1[@]}"

注意點: 數(shù)組定義為具體下標的元素進行賦值時,可以隔著定義
例如
arr2[1]="hello"
arr2[3]="world"
echo "arr2=${arr2[@]}"
echo "aee2[0]=${arr2[0]}"#該位置的元素沒有定義,默認為空
例題 :自定義一個所欲元素都是整數(shù)的數(shù)組,求你面所有元素的和,用for循環(huán)完成
1arr=(1 2 3 4 5)
2sum=0
3for value in ${arr[ @ ]}
4do
5 let sum+=value
6done
7echo "${sum}"

寫一個命令自動生成當天文件
1>獲取當年當月當日的時間信息
2>用$#去判斷參數(shù)的個數(shù)
3>如果個數(shù)為0 ,創(chuàng)建當年;如果個數(shù)為1 ,判斷參數(shù)是否符合-y,-m,-d.

                           mv 38.sh myfile
                     sudo cp myfile /bin/
       每天早上過來運行一下 source myfile
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 0.linux啟動的步驟 設備加電----》BIOS自檢-----》grub引導啟動-----》加載內核----》...
    萌面大叔2閱讀 861評論 0 1
  • 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
    BigJeffWang閱讀 10,508評論 3 53
  • 基礎命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,234評論 0 0
  • 個人學習批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,995評論 0 11
  • 01 生活中總有些地方是自帶三分靜氣的,比如說書店。 平常再怎么愛熱鬧的人,一走進書店里,都難免要屏聲閉氣、壓低嗓...
    知子已知閱讀 401評論 10 14

友情鏈接更多精彩內容