歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Shell腳本編程的一些基礎

bash 腳本名  可以運行腳本
bash的常用選線
#bash
 -n 語法測試
 -x 顯示過程

編程語言:
動態語言(腳本語言)
 變量不需要事先證明
 解釋執行
  編輯--->執行
 高級腳本語言  perl 太自由  python (完全面向對象) 只提供一種最優的 方法     ruby
 asp jsp php  (不用使用到root權限)   面向網頁的腳本語言
 
 
靜態語言(編譯行語言)
 變量必須聲明,嚴格區分變量類型
 編譯後才能執行
  編輯--->編譯--->連接--->執行
 
 
 
變量是命名的內存空間   命名 為了以後程序的調用方便

 


變量:
 變量類型:限定 占內存空間大小、數據存儲格式
  3
  字符  8bit
  數值 2bit
 
 
 
 
bash   不嚴格區分變量類型       區分數值型和字符型   不支持浮點行
 2/3=0  只區整數部分--->圓整
 
 
 
命令行下聲明的變量 只對當前登錄的shell 及子shell 有效
變量 
 a3
 declare
  -i  integer
  -x 環境變量
 declare -i A=0  初始化 聲明一個變量  並賦值
 set A=3  set  聲明的都是本地變量            有空格要用引號引起來
 變量類別(class):
 本地變量:  只對當前shell有效 整個腳本都有效  不能到其他腳本
 環境變量(全劇變量):對當前shell和子shell 有效  
       export  declare -x  聲明環境變量
   導出環境變量的方法:
      1、先先聲明變量,然後export導出
      2、直接export導出
 特殊變量:
     $0  特殊變量 用於引用腳本本身的名字
     $* $@   特殊變量  引用一個腳本的所有參數
    $* 把每個變量都當一個字符串
    $@ 把所有變量當成一個字符串
     $# 傳遞個命令行參數的個數   
 位置變量:
     $1-9 {0-無線}
     shift $1   輪換顯示變量

    
 local  定義變量   只對當前代碼段有效

變量用完之後怎麼處理:腳本結束後自動收回也可以
 unset  撤銷變量  收回
 
 
 
如何引用變量:
${變量名}  變量替換/引用
$變量名        ANIMAL=pig   There are some ${ANIMAL}s.


引號;引用
"":弱引用
'':強引用  強引用中的值不做變量替換  直接引用過來
``:命令引用

變量名的使用規定:
 只能包含字母數字和下劃線,但是不能以數字開頭

#echo 變量  顯示變量的值

 

用戶工作環境配置文件:
 全局配置:/etc/prefile, /etc/profile.d/*, /etc/bashre
 個人配置:~/.bash_profile,  .bashrc
  ~/.bash_history  命令歷史
  ~/.bash_logout   登出配置
 
  profile類 :交互式登錄用戶生效
     1、設置環境變量
     2、運行一些命令或腳本
 
    
  bashrc類:交互式和非交互式登錄用戶生效(不用用戶登錄就系要執行一些)
     1、設置本地變量
     2、定義命令別名

交互式登錄用戶執行用戶配置文件的過程
/etc/profile--->/etc/profile.d/*--->~/.bash_profile--->~/.bashrc--->/etc/bashrc
非交互式登錄:
~/.bashrc--->/etc/bashrc--->/etc/profile.d/*    

 
顯示變量
#set  顯示所有變量
#export  只用於顯示聲明過的環境變量
#printenv  顯示環境變量

幾個關鍵的環境變量
 DISPLAY:定義顯示信息顯示到那個顯示器上去
 LANG:聲明當前的語言環境.字符編碼
 PATH: 聲明 命令行在那個位置找命令對應的文件
 

 

輸入輸出重定向 和管道

標准輸入,標准輸出,標准錯誤輸出
標准輸入:STDIN  用0表示 默認是鍵盤
標准輸出:STDOUT 用1表示 默認是監視器
標准錯誤輸出:STDERR 用2表示 默認是監視器


輸出重定向:
>:定義標准輸出重定向   會把文件原有內容覆蓋掉  覆蓋輸出重定向
>>: 追加輸出重定向
2>:錯誤覆蓋輸出重定向
2>>:錯誤追加輸出重定向
&>混個輸出覆蓋重定向
&>>混合輸出


&> /dev/null 丟棄輸出


set -C 不允許使用覆蓋輸出
set +C 允許使用覆蓋輸出


管道:把一個命令的輸出當作另一個命令的輸入
  |
 
COMMAND1 | COMMAND2 | COMMAND3 | ...

管道一次把所有的內容傳給後面的 命令

 

#tee   既顯示又保存  兩項輸出

輸入重定向;
<  輸入重定向 符號
<<  here document   用於腳本當中生成一個問件時使用

 

腳本條件判斷:
判斷:bash
test expression
[ expression ]  必須有空格  可以做單獨的語句
[[ expression ]]  可以使用類似正則表達式的方式
[ ! expression ] 非


數值比較   整數比較測試
-gt 大於 great than
-ge 大於等於 great
-lt 小於
-le 小於等於
-eq 等於
-ne 不等於

Copyright © Linux教程網 All Rights Reserved