Shell的一些常識(shí)

Shell 腳本是什么?
一個(gè) Shell 腳本是一個(gè)文本文件,包含一個(gè)或多個(gè)命令。作為系統(tǒng)管理員,我們經(jīng)常需要使用多個(gè)命令來(lái)完成一項(xiàng)任務(wù),我們可以添加這些所有命令在一個(gè)文本文件(Shell 腳本)來(lái)完成這些日常工作任務(wù)。
什么是默認(rèn)登錄 Shell ?
在 Linux 操作系統(tǒng),"/bin/bash" 是默認(rèn)登錄 Shell,是在創(chuàng)建用戶時(shí)分配的。
使用 chsh 命令可以改變默認(rèn)的 Shell 。示例如下所示:
## chsh <用戶名> -s <新shell>
## chsh ThinkWon -s /bin/sh
在 Shell 腳本中,如何寫(xiě)入注釋?
注釋可以用來(lái)描述一個(gè)腳本可以做什么和它是如何工作的。每一行注釋以 # 開(kāi)頭。例子如下:
#!/bin/bash
## This is a command
echo “I am logged in as $USER”
語(yǔ)法級(jí)
可以在 Shell 腳本中使用哪些類型的變量?
在 Shell 腳本,我們可以使用兩種類型的變量:
系統(tǒng)定義變量
系統(tǒng)變量是由系統(tǒng)系統(tǒng)自己創(chuàng)建的。這些變量通常由大寫(xiě)字母組成,可以通過(guò) set 命令查看。
用戶定義變量
用戶變量由系統(tǒng)用戶來(lái)生成和定義,變量的值可以通過(guò)命令 "echo $<變量名>" 查看。
Shell腳本中 $? 標(biāo)記的用途是什么?
在寫(xiě)一個(gè) Shell 腳本時(shí),如果你想要檢查前一命令是否執(zhí)行成功,在 if 條件中使用 $? 可以來(lái)檢查前一命令的結(jié)束狀態(tài)。
如果結(jié)束狀態(tài)是 0 ,說(shuō)明前一個(gè)命令執(zhí)行成功。例如:
root@localhost:~## ls /usr/bin/shar
/usr/bin/shar
root@localhost:~## echo $?
如果結(jié)束狀態(tài)不是0,說(shuō)明命令執(zhí)行失敗。例如:
root@localhost:~## ls /usr/bin/share
ls: cannot access /usr/bin/share: No such file or directory
root@localhost:~## echo $?
Bourne Shell(bash) 中有哪些特殊的變量?
下面的表列出了 Bourne Shell 為命令行設(shè)置的特殊變量。
內(nèi)建變量 解釋
$0 命令行中的腳本名字
$1 第一個(gè)命令行參數(shù)
$2 第二個(gè)命令行參數(shù)
….. …….
$9 第九個(gè)命令行參數(shù)
$## 命令行參數(shù)的數(shù)量
$* 所有命令行參數(shù),以空格隔開(kāi)
如何取消變量或取消變量賦值?
unset 命令用于取消變量或取消變量賦值。語(yǔ)法如下所示:
## unset <變量名>
Shell 腳本中 if 語(yǔ)法如何嵌套?
if [ 條件 ]
then
命令1
命令2
…..
else
if [ 條件 ]
then
命令1
命令2
….
else
命令1
命令2
…..
在 Shell 腳本中如何比較兩個(gè)數(shù)字?
在 if-then 中使用測(cè)試命令( -gt 等)來(lái)比較兩個(gè)數(shù)字。例如:
#!/bin/bash
x=10
y=20
if [ $x -gt $y ]
then
echo “x is greater than y”
else
echo “y is greater than x”
Shell 腳本中 case 語(yǔ)句的語(yǔ)法?
基礎(chǔ)語(yǔ)法如下:
case 變量 in
值1)
命令1
命令2
…..
最后命令
!!
值2)
命令1
命令2
……
最后命令
Shell 腳本中 for 循環(huán)語(yǔ)法?
基礎(chǔ)語(yǔ)法如下:
for 變量 in 循環(huán)列表
do
命令1
命令2
….
最后命令
done
Shell 腳本中 while 循環(huán)語(yǔ)法?
如同 for 循環(huán),while 循環(huán)只要條件成立就重復(fù)它的命令塊。
不同于 for循環(huán),while 循環(huán)會(huì)不斷迭代,直到它的條件不為真。
基礎(chǔ)語(yǔ)法:
while [ 條件 ]
do
命令…
done
do-while 語(yǔ)句的基本格式?
do-while 語(yǔ)句類似于 while 語(yǔ)句,但檢查條件語(yǔ)句之前先執(zhí)行命令(LCTT 譯注:意即至少執(zhí)行一次。)。下面是用 do-while 語(yǔ)句的語(yǔ)法:
Shell 腳本中 break 命令的作用?
break 命令一個(gè)簡(jiǎn)單的用途是退出執(zhí)行中的循環(huán)。我們可以在 while 和 until 循環(huán)中使用 break 命令跳出循環(huán)。
Shell 腳本中 continue 命令的作用?
continue 命令不同于 break 命令,它只跳出當(dāng)前循環(huán)的迭代,而不是整個(gè)循環(huán)。continue 命令很多時(shí)候是很有用的,例如錯(cuò)誤發(fā)生,但我們依然希望繼續(xù)執(zhí)行大循環(huán)的時(shí)候。
如何使腳本可執(zhí)行?
使用 chmod 命令來(lái)使腳本可執(zhí)行。例子如下:chmod a+x myscript.sh 。
#!/bin/bash 的作用?
#!/bin/bash 是 Shell 腳本的第一行,稱為釋伴(shebang)行。
這里 # 符號(hào)叫做 hash ,而 ! 叫做 bang。
它的意思是命令通過(guò) /bin/bash 來(lái)執(zhí)行。
如何調(diào)試 Shell腳本?
使用 -x' 數(shù)(sh -x myscript.sh)可以調(diào)試 Shell腳本。
另一個(gè)種方法是使用 -nv 參數(shù)(sh -nv myscript.sh)。
如何將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出同時(shí)重定向到同一位置?
方法一:2>&1 (如## ls /usr/share/doc > out.txt 2>&1 ) 。
方法二:&> (如## ls /usr/share/doc &> out.txt ) 。
在 Shell 腳本中,如何測(cè)試文件?
test 命令可以用來(lái)測(cè)試文件。基礎(chǔ)用法如下表格:
Test 用法
-d 文件名 如果文件存在并且是目錄,返回true
-e 文件名 如果文件存在,返回true
-f 文件名 如果文件存在并且是普通文件,返回true
-r 文件名 如果文件存在并可讀,返回true
-s 文件名 如果文件存在并且不為空,返回true
-w 文件名 如果文件存在并可寫(xiě),返回true
-x 文件名 如果文件存在并可執(zhí)行,返回true
————————————————

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供巧家網(wǎng)站建設(shè)、巧家做網(wǎng)站、巧家網(wǎng)站設(shè)計(jì)、巧家網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、巧家企業(yè)網(wǎng)站模板建站服務(wù),十年巧家做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

2020年創(chuàng)新互聯(lián)年中促銷(xiāo)活動(dòng)
限購(gòu)2臺(tái)特價(jià)
韓國(guó)服務(wù)器 美國(guó)站群服務(wù)器
CN2線路 優(yōu)選配置 首月半價(jià)
更有國(guó)內(nèi)高防服務(wù)器超值特價(jià)
100G-200G防御
年付更優(yōu)惠
數(shù)量有限 售完為止
歡迎在線客服

本文標(biāo)題:Shell的一些常識(shí)
標(biāo)題鏈接:http://muchs.cn/article0/hgoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、用戶體驗(yàn)、品牌網(wǎng)站制作、網(wǎng)站改版、網(wǎng)站維護(hù)、微信小程序

廣告

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

小程序開(kāi)發(fā)