一、什麼是shell
shell是linux的一外殼,它包在linux核心的外面,為使用者和核心之間的互動提供了乙個介面
當使用者下達指令給作業系統的時候,實際上是把指令告訴shell,經過shell解釋,處理後讓核心做出相應的動作
系統的回應和輸出的資訊也由shell處理,然後顯示在使用者的螢幕上
二、什麼是shell指令碼
簡單的說,當命令或者程式不在命令列執行,而是通過乙個程式檔案來執行,這個程式就被稱為shell指令碼也就是在shell指令碼裡內建了多條命令,語句,迴圈控制,然後將這些命令一次性執行完畢,這種通過檔案執行命令的方式稱為非互動式
三、檢視系統預設shell
[root@localhost ~]# cat /etc/passwd | head -1
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# echo $shell
/bin/bash
四、指令碼開發規範
乙個完整的shell指令碼需要有以下幾個部分:
指令碼名:最好以.sh結尾
第一行:#!/bin/bash
指定直譯器:由哪個程式來執行指令碼內容
#!:幻數
注意:#!/bin/bash必須寫在第一行,否則會被認為是注釋
有使用者判斷,否則任何使用者都可以執行這個指令碼
有流程控制,否則只是把簡單的命令進行順序操作,沒有成功與否的判斷
注釋:可以命令後,也可以自成一行
五、 指令碼執行方法
sh script.sh | bash script.sh
沒有執行許可權時
[root@localhost ~]# sh log.sh
logs cleaned up...
12
path/script.sh | ./script(要在指令碼的當前目錄下)
絕對路徑,需要給指令碼新增執行許可權
[root@localhost ~]# /root/log.sh
-bash: /root/log.sh: permission denied ##沒有執行許可權時,不可執行
[root@localhost ~]# chmod +x log.sh
[root@localhost ~]# /root/log.sh ##新增許可權後正常執行
logs cleaned up...12
3456
source script.sh | . script.sh
這種方式會使用source或.號來讀如入指定shell檔案,並會把其他shell中的變數值或函式返回給父shell繼續使用
前兩種方式,在執行指令碼的時候,會預設開啟乙個新的shell,而新shell的變數值和函式不會返回給父shell
[root@localhost mnt]# vim test.sh
#!/bin/bash
username=`whoami`
[root@localhost mnt]# sh test.sh
[root@localhost mnt]# echo $username ##無返回值
[root@localhost mnt]# source test.sh
[root@localhost mnt]# echo $username ##有返回值
root
SHELL 基礎知識
1 什麼是shell?shell的本意是 殼 的意思,其實已經很形象地說明了shell在linux系統中的作用。shell就是圍繞在linux核心之外的乙個 殼 程式,使用者在作業系統上完成的所有任務都是通過shell與linux系 統核心的互動來實現的。shell本身是乙個c語言編寫的程式,是使用...
shell 基礎知識
預設變數 傳入指令碼的命令列引數個數 所有命令列引數值,在各個引數值之間留有空格 0 命令本身 shell檔名 1 第乙個命令列引數 2 第二個命令列引數 區域性變數 在變數首次被賦值時加上local 關鍵字可以宣告乙個區域性變數,例s3 bin bash hello var1 echo hello...
shell 基礎知識
預設變數 傳入指令碼的命令列引數個數 所有命令列引數值,在各個引數值之間留有空格 0 命令本身 shell檔名 1 第乙個命令列引數 2 第二個命令列引數 區域性變數 在變數首次被賦值時加上local 關鍵字可以宣告乙個區域性變數,例s3 bin bash hello var1 echo hello...