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入門基礎
- Spring Shell入門介紹Spring
- Shell 程式設計入門程式設計
- Shell從入門到精通
- shell一文入門通
- Shell 入門系列 (一): 變數變數
- Linux入門---(三)Shell程式設計Linux程式設計
- Shell 入門系列: 導航 (未完待續)
- Linux基礎入門(一)初識ShellLinux
- 簡單的 Shell 指令碼入門教程指令碼
- shell入門基礎&常見命令及用法
- Linux-shell程式設計入門基礎Linux程式設計
- linux Shell 命令列-01-intro 入門介紹Linux命令列
- shell——shell輸入輸出
- Linux Shell 從入門到刪除根目錄跑路指南Linux
- 從入門到掌握 - 系統學習shell語言
- Shell指令碼入門:編寫格式與執行方式指令碼
- 【Linux入門】Shell基本運算子的分類有哪些?Linux
- Linux shell有哪些型別?Linux入門知識分享Linux型別
- 01 . Shell詳細入門介紹及簡單應用
- Linux運維要了解哪些shell技能?Linux學習入門Linux運維
- Linux命令列與shell指令碼程式設計入門經驗Linux命令列指令碼程式設計
- Linux Bash Shell 指令碼入門(3)——Linux常用命令介紹Linux指令碼
- Shell程式設計-01-Shell指令碼初步入門程式設計指令碼
- 入門入門入門 MySQL命名行MySql
- xampp 用 shell 匯入sqlSQL
- shell自動化輸入
- shell實戰之tomcat看門狗Tomcat
- 何入CTF的“門”?——所謂入門就是入門
- 如何入CTF的“門”?——所謂入門就是入門
- Shell輸入\輸出重定向
- scala 從入門到入門+
- makefile從入門到入門
- gRPC(二)入門:Protobuf入門RPC
- Linux從入門到精通系列之SHELL程式設計變數與四則運算Linux程式設計變數
- 【小入門】react極簡入門React
- Android入門教程 | RecyclerView使用入門AndroidView