shell定義
shell是一種應用程式,可以看做是連線使用者和linux核心的橋梁。它提供了乙個介面供使用者訪問作業系統核心的服務;
shell變數
變數宣告:變數和等號之間不能有空格;
變數使用:
name="neil"
echo $name
echo $ # 花括號的目的是方便識別變數邊界,推薦使用;
唯讀變數
#!/bin/bash
uname="fn"
readonly uname
uname ="shell"
執行bash a.bash
命令,得到以下結果:
刪除變數:unset var_name
,變數刪除後無法再呼叫,且該命令無法刪除唯讀變數;
shell傳參
字元含義
$#傳遞至指令碼檔案的引數個數
$*以但字串形式顯示所以傳遞至指令碼檔案的引數
$$指令碼執行的當前程序id
$!後台執行的最後乙個程序的id
$@將所有傳遞至指令碼檔案的引數單獨返回,注意與$*的區別,不是以單字串形式
$-與set命令功能相同,顯示shell所使用的當前選項
$?顯示最後命令的退出狀態,0表示無錯誤,否則表示有錯誤
#!/bin/bash
echo "shell傳參例項"
echo "檔名:$0"
echo "第乙個引數:$1"
echo "第二個引數:$2"
echo "引數長度:$#"
echo "所有引數:$*"
for i in "$@"; do
echo $i
done
echo "當前設定:$-"
echo "退出狀態:$?"
shell字串
單引號裡的所有字元會原樣輸出,不會被轉義;
雙引號支援輸出變數和轉義字元;
字串拼接
提取子串
uname="whoami"
echo $ # 輸出 "hoam"
獲取長度
echo $ # 輸出6
查詢子串
str="hello, shell"
echo `expr index "$str" el` # 在str中查詢e或l,輸出2
shell流程控制
條件語句
#!/bin/bash
a=10
b=20
if [ $a -eq $b ]
then
echo "a=b"
elif [ $a -gt $b ]
then
echo "a>b"
else
echo "a
for迴圈
for i in item1, item2 ... itemn
do ***
***echo $i
***done
# 單行格式
while迴圈
#!/bin/bash
var=1
while(($var<5))
do echo $var
let "var++"
done
until迴圈
條件為true時終止迴圈
#!/bin/bash
var=1
until [ $var -gt 3 ]
do echo $var
var=`expr $var + 1`
done
case
結束標誌esac
#!/bin/bash
var=2
case $var in
1) echo "var=1"
;;2) echo "var=2"
;;3) echo "var=3"
;;esac
shell函式
shell函式需要先定義後使用,通過函式名直接呼叫;函式返回值可以在該函式執行後使用$?
獲取;
函式返回值獲取
引數傳遞
輸出普通字元:echo hello
或echo "hello"
echo輸出轉義字元:`echo -e 「\e[1;32m hello\twolrd \e[0m」
echo不進行轉義:echo '\t'
# 輸出\t
echo結果輸出到指定檔案:echo hello, shell > file
顯示命令執行結果:echo `cat file` # 輸出hello, shell
echo以指定顏色輸出:echo -e "\e[1;32m hello\twolrd \e[0m"
支援的顏色列表包括: 字元
顏色30m
黑色31m
紅色32m
綠色33m
黃色34m
藍色35m
洋紅36m
青色37m
白色管道符
作用:前一條命令的輸出是後一條命令的操作物件;
格式:cmd1 | cmd2 | cmd3 …
示例:cat file | grep how
netstat -an | grep established | wc -l
參考文獻
shell基礎和簡單入門
1 shell簡介 shell提供了使用者和核心進行互動操作的一種介面,它接收使用者的命令並送入核心執行。shell指令碼語言是linux unix系統上應用廣泛的實用程式語言,所以對於任何乙個希望精通linux作業系統的人,掌握shell指令碼知識都是非常必要的。而它的特點是容易學習,但是精通很難...
Shell命令入門
必要引數 a 全部檔案系統列表 h 方便閱讀方式顯示 h 等於 h 但是計算式,1k 1000,而不是1k 1024 i 顯示inode資訊 k 區塊為1024位元組 l 只顯示本地檔案系統 m 區塊為1048576位元組 no sync 忽略 sync 命令 p 輸出格式為posix sync 在...
shell基礎入門
linux中有好多中不同的shell,但是通常我們使用bash bourne again shell 進行shell程式設計,因為bash是免費的並且很容易使用。所以在本文中筆者所提供的指令碼都是使用bash 但是在大多數情況下,這些指令碼同樣可以在 bash的大姐,bourne shell中執行 ...