目錄首先shell
是什麼?
- 直譯器,啟動器
-直譯器:
直譯器有兩種解釋的方式
1) 使用者互動輸入: 就是使用者輸入一行,機器執行一行
2) 文字檔案輸入: 就是把要執行的 shell 命令寫在乙個檔案中,然後執行
source 指令碼檔案
. 指令碼檔案
如何在檔案中定義指令碼直譯器?
- #!/bin/bash
- #!/usr/bin/python
在 指令碼檔案 中第一行寫上面的語句,就是交代了該指令碼檔案使用什麼直譯器執行
否則就需要手動寫
source/. 指令碼檔案
python 指令碼檔案
注意: 在此之前需要給檔案加上可執行許可權 chmod +x 指令碼檔案
shell中也可以定義函式,下面是shell中定義函式的乙個簡單樣式
重定向
預設是標準的輸入輸出,現在自己手動指定輸入輸出的檔案
>,>>,>& 重定向輸出(1>,2>)
1>,1>>: 標準輸出重定向
2>,2>>: 錯誤輸出重定向
0>/< 完全重寫
>>/<< 追加
程式自身都有i/o
0: 標準輸入
1: 標準輸出
2: 錯誤輸出
&>,>&
將標準輸出和錯誤輸出都重定向到乙個檔案中
ls -l /god /usr >& ls.out
輸出重定向使用
輸入重定向使用
shell的變數的作用域如下
- 本地
- 區域性
- 位置
- 特殊
- 環境
本地變數
當前shell擁有(其他shell無法使用),生命週期隨shell(重啟shell後會消失 )
name=god
echo $name
區域性變數
只能local用於函式
函式()
位置變數
- $1,$2,$
傳遞的第n個引數
- $#: 位置引數個數
- $*/$@: 引數列表
特殊變數
- $$: 當前shell的pid
- $?: 上乙個命令退出的狀態
0:成功
other: 失敗
環境變數
export 變數名
source 指令碼檔案
下面是配置python環境變數的例子
cd /etc/profile.d 進入全域性環境變數的指令碼目錄
vim python3.sh 編寫環境變數的指令碼
*****python3.sh*****
export python_home=/opt/python3.7
export path=$/bin:$path
********************
source /etc/profile 更新全域性的配置指令碼
引用
單引號' : 弱引用,不會解析變數(不能進行轉義)
雙引號" : 強引用,會解析變數
注意: 引用輸出後會刪除引號
命令替換
`` 或 $()
`ls -l /`
$(ls -l /)
注意: 命令替換是可以進行擴充套件的 $($()....)
退出狀態
echo $?
- 0 成功退出
- other 退出失敗
邏輯判斷
- command1 && command2
- command1 || command2
算術表示式
(1)
a=10
b=20
let c=$a+$b
(2)
$(())
c=$((a+b))
條件表示式
test,
- [表示式]
- test 表示式
可以使用 help test 來檢視幫助
練習題
- 新增使用者
- 使用者密碼同使用者名稱
- 靜默執行指令碼
- 避免捕獲使用者介面
- 程式自定義輸出
fi經典格式: if [ 表示式 ] ; then 表示式 ; else 表示式 ; fi
if [3 -gt 8] ; then echo "ok" ; else echo "not ok" ;
- while
while 條件表示式;
do...
done
- for
步進for: for (( i=1;i<10;i++ )); do echo $i ; done
增強for: for i in "bj sxt" "sh sxt" "gz sxt"; do echo $i; done
for (());do
...done
for i in ...;do
...done
- case
練習題
- 使用者給定路徑
- 輸出檔案大小最大的檔案
- 遞迴子目錄
練習題
迴圈按行輸入檔案內容(要求多種方式)
Linux的Shell程式設計1
clear 清除,類似於dos裡的cls 在linux領域內大多用在伺服器上,很少遇到關機的操作。畢竟伺服器上跑乙個服務是永無止境的,除非特殊情況下,不得已才會關機 翻頁 shift page on 在 linux 或 unix 作業系統中,所有的檔案和目錄都被組織成以乙個根節點開始的倒置的樹狀結構...
shell程式設計1
1 雙引號 雙引號內的內容除了 轉義符 倒引號 這三個保留特殊功能,其他的均作為普通字元。2 單引號 單引號裡的內容全部作為普通字元。3 倒引號 引號內的內容當做 shell 命令列來解釋。4 美元符 變數符,如 a表示變數 a的值。變數字元長度超過 1個時,用 括起來。5 變數 本地變數 只能在建...
Shell 程式設計 1
為什麼要進行shell程式設計 在linux系統中,雖然有各種各樣的圖形化介面工具,但是sell仍然是乙個非常靈活的工具。shell不僅僅是命令的收集,而且是一門非常棒的程式語言。您可以通過使用shell使大量的任務自動化,shell特別擅長系統管理任務,尤其適合那些易用性 可維護性和便攜性比效率更...