學習整理
參考部落格:
shell是一種指令碼語言,常見的指令碼直譯器有:
定義變數
number=100
country="china"
使用變數
在定義過的變數前面加上$符號就可以了。另外,對於變數的{}是可以選擇的,幫助直譯器識別變數的邊界。
echo $number
echo "i love my country$"
重定義變數
直接重新賦值就可以了
唯讀變數
readonly home="jiangsu"
刪除變數unset variable_name
變數型別
執行shell時,同時存在三種變數
環境變數
shell變數
特殊變數
$?可以獲取上乙個命令的退出狀態。就是上乙個命令執行後的返回結果。成功返回0。
echo中的轉義符:
使用echo -e禁止轉義,預設也是不轉義的。
echo -e可以對轉義字元進行替換。
命令替換
把乙個命令的輸出複製給乙個變數,方法是使用反引號``
directory=`pwd`
echo $directory
變數替換
expr的乘法為\* 除法/
expr的表示式和運算子之間要有空格;
關係運算子
只支援數字。
布林運算子
字串運算子
檔案測試運算子
unix檔案的各種屬性。
雙引號字串的拼接
country="china"
echo "hello, $country"
#也可以
echo "hello, "$country" "
獲取字串的長度string='abcd'
echo $
提取子字串string="alibaba is a great company"
echo $ #輸出liba
查詢字串string="alibaba is a great company"
echo `expr index "$string" is`
處理路徑的字串
bashename 得到檔名
bashename -a 表示處理多個路徑 -s表示去掉指定檔案的字尾名
bashname /home/1.txt 1.txt
得到路徑名,不帶檔名 使用dirname
dirname /home/1.txt > /home
bash支援一位陣列,不支援多為陣列。
array_name=(1 2 3 4)
array_name[0]=value0
array_name[1]=value1
讀取元素$
它與c語言的printf相似,不過也有不同:
1、printf不用加括號
if語句
a=10
b=20
if [ $a == $b ]
then
echo "a is equal to b"
else
echo "a is not equal to b"
fi
for 迴圈
for 變數 in 列表
docommand1
command2
done
for loop in 1 2 3 4 5
doehco "the value is: $loop"
done
while迴圈while command
docomment
done
until迴圈
untile迴圈執行一系列命令直至條件為true時停止
格式類似於while
shell函式必須先定義後使用,定義如下,
function function_name()
shell可以包含外部指令碼,將外部指令碼的內容合併到當前指令碼。
使用
. filename
或source filename
shell 基礎整理
shell 基礎整理 1,指令碼檔名以 sh 2,命名變數 1 自定義變數 name zhangsan 2 evn 大小寫字母 3 echo name echo path 4 作用域 預設自定義變數 區域性 通過呼叫多個shell程序 開啟shell 父 再次開啟shell 子 env shlvl ...
Shell基礎整理
shell的作用是將使用者輸入的文字命令轉換成核心能識別的資料指令交給核心進行執行,核心需要翻譯成二進位制交由cpu底層來執行 使用者層 shell 呼叫對應應用程式 kernel 硬體層 運算和周邊外設 傳遞給kernal 應用程式 shell 使用者 shell就是底層命令直譯器,shell就是...
Shell基礎整理一
僅以此章記錄曾經奮鬥的歲月 位置變數 1,2 bin bash ip 1 ping ip echo ping ip is up echo ping ip is down 演示位置變數 1 root localhost sh ping.sh 192.999.999.999 114.114.114.11...