第 5 章 shell編程_課後題

考試題1:用source執行腳本和用bash執行Shell腳本的區別是什麼?
souce執行腳本相當於是在一個shell當中,而bash執行腳本相當於開啓了一個子shell。就變量而言,一個shell當中執行的變量是可以用的,而子shell的變量,父shell中是不能繼承的,子腳本執行完後,變量就失效了。

考試題2:如何自定義環境變量?
變量分爲:環境變量和普通變量,環境變量定義:例子 echo 'Oldboy=od' >>/etc/bashrc source /etc/bashrc
優先級: /etc/bashrc ~/.bashrc ~/.bash_profile /etc/profile

考試題3:定義變量內容,不加引號、單引號、雙引號、反引號結果有什麼不同?應該怎麼用?
不加引號:默認相當是雙引號 數字
單引號:所見即所得,吃啥吐啥 不想被解析的變量、函數
雙引號:會將變量、函數、特殊符號等解析出來 字符串
反引號:會先計算反引號裏面的命令 想優先計算的命令

考試題4:請分別說出2個以上用於整數運算特殊符號或命令,以及適合小數運算的命令。
整數:(()) expr let $[]
適合小數:bc awk

考試題5:寫出特殊變量對應的意義及應用br/>$0、$n、$#、$*、$@、$?、$$、$!、$_
$0表示文件名
br/>$n表示第n個參數
$#表示參數的個數
$*表示所有位置參數,但會把所有位置參數當作一個整體
$@表示所有位置參數,但$@中會把每個位置參數當作一個獨立的字段
$? 判斷上一個腳本或者命令是否運行正確,如果正確用0,如果錯誤用其他數字表示
$$ 表示當前腳本或程序運行的pid號
$! 表示上一個後臺工作進程的pid號
$_ 獲取上一個腳本執行的最後一個參數

考試題6:寫出下面特殊變量擴展的意義
${oldboy}、${#oldboy}、${oldboy:offset:length}、${oldboy#word}、${oldboy##word}、${oldboy%word}、${oldboy%%word}、${oldboy/pattern/string}、${oldboy//pattern/string}、${oldboy:-word}
${oldboy} 獲取變量的內容
${#oldboy} 獲取變量的字符長度
${oldboy:offset:length} 變量的偏移量,從“offset”之後開始取字符長度,取“length”長度個字符
${oldboy#word} 從變量內容的開始方向,最短匹配內容,然後將內容取出來
${oldboy##word} 從變量內容的開始方向,最長匹配內容,然後將內容取出來
${oldboy%word} 從變量內容的後面,最短匹配內容,然後將內容取出來
${oldboy%%word} 從變量內容的後面,最長匹配內容,然後將內容取出來
${oldboy/pattern/string} 找到變量內容的“pattern",將第一處替換成"string"
${oldboy//pattern/string} 找到變量內容的“pattern",將所有替換成"string"
${oldboy:-word} 如果“oldboy”這個變量沒有值,就讓“world”這個變量取代它,但注意,"oldboy"這個變量不會被賦值

考試題7:在條件測試與表達式中,[]和[[]]有何區別?
[] 一條判斷語句,如果是多個條件判斷,用-a -o來聯合使用
[[]] 多個語句來聯合判斷,用&&或||來關聯測試語句

考試題8:說出適合在[]以及test中整數比較的特殊運算符號?
-z -n = !=
-gt -eq -lt -ge -le -ne
-a -o !
-f -d -e -x -l -r -w -b

考試題9、輸出下面菜單
1.install MySQL
2.install Tomcat
3.exit
當用戶選擇對應的數字就開始安裝對應的服務(可echo輸出替代),需要對用戶輸入的數字進行判斷是否爲整數(用條件測試表達式實現)。
#!/bin/bash
#Author Young
#at 20200210
#desc install memu
read -t 30 -p "請輸入一個數字Usage:{1|2|3}:" a
[ -z $a ] &&{
echo "你輸入的值爲空!"
exit 1
}
expr 1 + $a &>/dev/null
[ $? -ne 0 ] &&{
echo "請輸入整數!"
exit 2
}
[ $a -eq 1 ] &&{
echo "install MySQL..."
exit
}
[ $a -eq 2 ] &&{
echo "install Tomcat..."
exit
}
[ $a -eq 3 ] &&{
echo "bye"
exit
}
[ $a -ne 1 -o $a -ne 2 -o $a -ne 3 ] &&{
echo "只能輸入1|2|3"
exit
}

考試題10、使用read讀入方式比較兩個整數大小(用條件表達式實現)。
#!/bin/bash
#Author Young
#at 20200210
#desc compare
read -t 30 -p "請輸入兩個整數:" a b
[ -z $b ] &&{
echo "請完整輸入兩個整數!"
exit 1
}
expr 1 + $a + $b &>/dev/null
[ $? -ne 0 ] &&{
echo "你輸入的不是兩個整數!"
exit 2
}
[ $a -gt $b ] &&{
echo "$a 大於 $b"
exit
}
[ $a -lt $b ] &&{
echo "$a 小於 $b"
exit
}
[ $a -eq $b ] &&{
echo "$a 等於 $b"
exit
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章