shell入門
本筆記參考自:tutorialspoint
變數
一般變數
一般的變數是指我們自己定義的,在程式當中需要使用的變數。定義時可以通過 =
對其進行初始化,訪問變數時使用 $
。
# definition of the variable, please note that there is no space surround "="
greeting="hello world"
# use the variable we defined above
echo $greeting
在shell程式設計當中,變數可以分成三類:
- 本地變數
- 環境變數
- shell變數
特殊(內建)變數
-
$
, 表示當前shell的程式ID; -
$0
, 表示當前script的檔名; -
$n
, 表示當前shell需要的引數; -
$?
, 上一個命令的執行結果程式碼; -
$!
, 上一個在後臺執行的程式ID; $*, $@
首先需要明確
$*
和$@
沒有任何區別,但是”$*”
和”$@“
有很大區別。”$*”
會把整個命令列輸入的引數包裹成一個引數,用空格分隔。”$@“
會把整個命令列的引數拆成一個一個獨立的引數,用空格分割。
參看以下這個例子:
# file name test.sh
echo '$*'
for TOKEN in "$*"
do
echo $TOKEN
done
echo '$@'
for TOKEN in "$@"
do
echo $TOKEN
done
在命令列下執行bash test.sh a b c
。輸出如下:
$*
a b c
$@
a
b
c
陣列
在shell當中,陣列可以理解成動態陣列,並且使用時不一定需要宣告。陣列下標從零開始,訪問時使用${array_name[index]}格式進行。
name[0]="eric0"
name[1]="eric1"
name[2]="eric2"
echo ${name[0]} #eric0
echo ${name[1]} #eric1
echo ${name[2]} #eric2
ecah ${#name[*]} #3 (array length)
ecah ${#name[@]} #3 (array length, same with above)
操作符
數學運算子
a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
關係運算子
a=10
b=20
# -eq --> =
# -ne --> !=
# -gt --> >
# -lt --> <
# -ge --> >=
# -le --> <=
# space must appear around "[" and "]"
if [ $a -eq $b ]
then
echo "$a -eq $b : a is equal to b"
else
echo "$a -eq $b: a is not equal to b"
fi
布林運算子
a=10
b=20
# !
if [ $a != $b ]
then
echo "$a != $b : a is not equal to b"
else
echo "$a != $b: a is equal to b"
fi
# -a --> and
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a -lt 100 -a $b -gt 15 : returns true"
else
echo "$a -lt 100 -a $b -gt 15 : returns false"
fi
# -o --> or
if [ $a -lt 100 -o $b -gt 100 ]
then
echo "$a -lt 100 -o $b -gt 100 : returns true"
else
echo "$a -lt 100 -o $b -gt 100 : returns false"
fi
字串運算子
File Test運算子
函式
定一個函式和其他語言差不多,呼叫函式時只需要通過函式名,而不需要加上括號。需要注意的是,函式在呼叫之前必須先定義。
# define a function
greet() {
echo "Hello world from a function"
}
# call the function
greet
迴圈
下面的程式碼片段可以列出當前目錄下的所有子專案:
for file in ./*
do
echo file
done
更多迴圈語句,參看這裡。
迴圈控制語句,continue
和 break
參看這裡。
條件
下面的程式碼片段可以列出當前目錄下的所有子專案,並判斷該子專案是目錄還是檔案:
for file in ./*
do
if test -f file
then
echo "$file is a file"
else
echo "$file is a directory"
fi
done
更多的條件語句,參看這裡。
相關文章
- shell入門系列
- Shell入門——shell特性、變數變數
- linux新手入門――shell入門(轉)Linux
- Fish shell 入門教程
- shell入門基礎
- shell入門--第一個shell指令碼指令碼
- Shell從入門到精通
- Shell 程式設計入門程式設計
- shell程式設計入門程式設計
- shell一文入門通
- Shell 入門系列 (一): 變數變數
- Spring Shell入門介紹Spring
- csh shell程式設計入門程式設計
- 宇宙第一 shell —— fish 入門
- aix_shell入門之一AI
- shell程式設計入門指南程式設計
- Shell程式設計入門例項程式設計
- shell入門基礎必備(轉)
- Shell入門:掌握Linux,OS X,Unix的Shell環境Linux
- Shell 入門系列: 導航 (未完待續)
- 簡單的 Shell 指令碼入門教程指令碼
- scrapy入門教程3:scrapy的shell命令
- Linux基礎入門(一)初識ShellLinux
- shell入門基礎&常見命令及用法
- [轉自LINUXEDEN]shell入門絕佳!(三)Linux
- [轉自LINUXEDEN]shell入門絕佳!(二)Linux
- [轉自LINUXEDEN]shell入門絕佳!(一)Linux
- 10分鐘入門Shell指令碼程式設計指令碼程式設計
- Shell指令碼程式設計30分鐘入門指令碼程式設計
- Linux下的shell程式設計入門(轉)Linux程式設計
- Shell指令碼入門:編寫格式與執行方式指令碼
- 從入門到掌握 - 系統學習shell語言
- 01 . Shell詳細入門介紹及簡單應用
- Linux Shell 從入門到刪除根目錄跑路指南Linux
- 【Linux入門】Shell基本運算子的分類有哪些?Linux
- Linux Shell從入門到刪除根目錄跑路指南Linux
- Shell程式設計基礎學習之六:sed 入門程式設計
- Shell程式設計入門:Linux直譯器原理(轉)程式設計Linux