shell 的變數及四則運算
編譯型語言:優點,執行效率較高;缺點,依賴於編譯器 C C++,相容性不好
解釋型語言:程式不需要編譯,執行效率相對較低,相容性好,跨平臺;shell、python、ruby、perl
總結:
Linux組成:kernel、檔案系統、應用程式、shell
shell:人機互動的一個橋樑;直譯器
開啟一個終端(bash的一個介面)
|
bash bash shell shell的一種 csh sh...
|
kernel
|
硬體
什麼是shell指令碼?
簡單來說,是將一堆命令儲存在一個檔案中,然後按照順序去執行。
若干命令+指令碼基本格式+指令碼特定語法+思想=shell指令碼
什麼時候會用到shell指令碼?
如何去學習shell指令碼?
1 、儘可能多的記住一些命令
2、掌握指令碼的標準格式(#!魔法字元 指定直譯器 /bin/bash /bin/sh ..)
3、必須熟練掌握指令碼的基本語法
變數定義
條件判斷
分支語句
迴圈語句
函式
陣列
正則表示式、awk、sed
祕訣:多看多寫多思考
怎麼執行指令碼:
非標準:
672 bash 1.sh
673 sh 1.sh
674 source 1.sh
675 . 1.sh
676 bash -x 1.sh
677 vim 1.sh
678 bash 1.sh
679 bash -x 1.sh
指令碼檔案可以不用有可執行許可權;不建議
bash -x 1.sh -x顯示指令碼執行過程的資訊,幫助排錯
標準:
1.sh
#!/bin/bash 魔法字元,表示該指令碼使用哪種直譯器去解釋
...
chmod +x 1.sh 指令碼要有可執行許可權
執行:
./1.sh 相對路徑表示該指令碼
/shell/shell01/1.sh 絕對路徑執行
bash shell的符號:
雙引號(""):將引號裡的內容當作整體;允許通過$()去引用其他變數
單引號(''):將引號裡的內容當作整體;不允許通過$()去引用其他變數
反撇號(``):引號裡面的命令優先執行,和$()含義是一樣的;如果有巢狀那麼不能用``號
$(())和 $[]:運算子
; :可對命令進行分割;不去考慮上一條命令所執行的結果
&&:邏輯與;可對命令進行分割;但是需要考慮上一條命令所執行的結果
||:邏輯或;可對命令進行分割;不需要考慮上一條命令執行結果
變數分類:
本地變數:當前使用者自定義的變數;當前程序有效,其他程序或者當前程序的子程序無效
a=123
echo $a
123
su - redhat
bash
# unset a 取消變數定義
環境變數:當前程序有效,並且能被子程序呼叫
env 檢視當前系統的環境變數
set 檢視當前系統的環境變數和臨時變數
HI=hello
export HI
或者
# export HELLO=abc
全域性變數:全域性所有使用者和程序都能呼叫,且繼承,新建使用者也能呼叫
/etc/profile
HI=hello
export HI
或者
export HELLO=abc
系統變數(bash中內建的變數):shell本身已經固定好的一些變數
$#:指令碼後面接引數個數
$*:指令碼後面所有的引數
[email protected]:指令碼後面所有的引數
$?:上一條命令執行後返回的狀態
狀態值:
0:
非0:
127:command not found(命令未安裝|環境變數)
126:找到了命令但是無法執行|許可權不夠
1&2:沒有找到檔案或目錄
$$:當前程序的程序號
$!:後臺執行的最後一個程序號
!$:最後一條命令或引數
!!:最後一條命令的歷史記錄
位置引數:
$0:當前程式的程式名或程序
$1~$9:位置引數變數
${10}~${n}:位置引數
vim 2.sh
#!/bin/bash
echo "\$0 = $0"
echo "\$# = $#"
echo "\$* = $*"
echo "\[email protected] = [email protected]"
echo "\$1 = $1"
echo "\$2 = $2"
echo "\$7 = $7"
echo "\$10 = ${10}"
echo "\$11 = ${11}"
chmod +x 2.sh
# ./2.sh a b c
$0 = ./2.sh
$# = 3
$* = a b c
[email protected] = a b c
$1 = a
$2 = b
$7 =
$10 =
$11 =
# ./2.sh a b c v b f u o p 7 9
$0 = ./2.sh
$# = 11
$* = a b c v b f u o p 7 9
[email protected] = a b c v b f u o p 7 9
$1 = a
$2 = b
$7 = u
$10 = 7
$11 = 9
變數的定義:
1、預設情況下,變數型別沒有什麼要求。可以給變數賦任何值,但是等號兩邊不能有任何的空格。
A=123
A="1 2 3"
A='1 2 3'
A =123
A= 123
呼叫變數:
$變數名 ${變數名}
[[email protected] shell01]# A=123456789
[[email protected] shell01]# echo $A
123456789
[[email protected] shell01]# echo ${A:3:3}
456
[[email protected] shell01]# echo ${A:2:3}
345
${A:3:3}
A:變數名
3:從第3-1位開始擷取;0代表從第1位開始
3:擷取3位
2、變數名區分大小寫
3、變數名不能以數字或者特殊符號開頭
# A1B=123
[[email protected] shell01]# echo $A1B
123
[[email protected] shell01]# 1AB=123
bash: 1AB=123: command not found
[[email protected] shell01]# ?A=123
bash: ?A=123: command not found
[[email protected] shell01]# _A=123
[[email protected] shell01]# echo $_A
123
4、將命令所執行的結果儲存到變數
# A=`uname -r`
[[email protected] shell01]# echo $A
2.6.32-431.el6.x86_64
[[email protected] shell01]# a=$(hostname)
[[email protected] shell01]# echo $a
node1.uplook.com
5、陣列
陣列的定義:用小括號擴起來定義陣列,括號裡的元素用空格隔開
array=(var1 var2 var3)
或者
array[0]=var1
array[1]=var2
array[2]=var3
取值:
${array[0]}
${array[*]}
${array[@]}
hello,user1
hello,user2
hello,user3
user=(user1 user2 user3)
for i in ${user[@]}
do
echo "hello,$i"
done
# for i in ${user[@]};do echo "hello,$i";done
hello,zhangsan
hello,lisi
hello,wanger
6、declare 定義有型別的變數
-i:將變數看成整數
-r:定義只讀變數
-x:將變數匯出到環境變數
-a:將變數看成陣列
7、read 互動式定義變數
-p:提示資訊
-n:字元數
-t:超時
-s:不顯示
8、其他變數
[[email protected] shell01]# a=/shell/shell01/1.sh
[[email protected] shell01]# echo $a
/shell/shell01/1.sh
[[email protected] shell01]# dirname $a
/shell/shell01
[[email protected] shell01]# basename $a
1.sh
dirname:取出目錄
basename:取出檔名
%:從右往左匹配
%%:從右往左最大程度匹配
#:從左往右匹配關鍵字
##:從左往右匹配關鍵字
[[email protected] shell01]# echo ${a%/*}
/shell/shell01
[[email protected] shell01]# echo ${a%%.*}
/shell/shell01/1
[[email protected] shell01]# echo ${a%%/*}
[[email protected] shell01]# a=hello/shell/shell01/1.sh
[[email protected] shell01]# echo $a
hello/shell/shell01/1.sh
[[email protected] shell01]# echo ${a%%/*}
hello
簡單的四則運算:
預設的四則運算:+ - * / %
$(()) $[] expr let
102 * 11
100 / 7
100 除8 取餘
20的平方
1.5加20
echo 1.5+20|bc
相關推薦
shell 的變數及四則運算
編譯型語言:優點,執行效率較高;缺點,依賴於編譯器 C C++,相容性不好 解釋型語言:程式不需要編譯,執行效率相對較低,相容性好,跨平臺;shell、python、ruby、perl 總結: Linux組成:kernel、檔案系統、應用程式、shell s
Linux---shell變數及指令碼中的函式
一、什麼是變數? shell在定義變數的時候,變數名與變數之間不能存在空格,這個大多數的語言的這個不同還是蠻大的,不過定義的規則就其他的語言定義的規則大致相同了。 1) 區域性變數 區域性變數在指令碼或命令中定義,僅在當前shell例項中有效,其他shel
linux——shell變數及函式
shell變數 1.變數定義: 變數即在程式執行過程中它的值是允許改變的量,變數是用一串固定的字元來標誌不固定的值的一種方法,變數是一種使用方便的佔位符,用於引用計算機記憶體地址,該地址可以儲存scripts執行時可更改的程式資訊。在she
awk使用shell變數及shell使用awk中的變數
在寫shell指令碼時,經常會使用到awk程式。但是有些複雜的邏輯,可能需要在awk中使用在shell中定義的變數,而且awk程式處理之後,產生的中間變數,還需要在shell中繼續處理。 一、那如何在awk中使用在shell中定義的變數呢? 方法一:使用"'把shell
01: Shell概述 編寫及執行指令碼 、 Shell變數 總結和答疑
Top NSD SHELL DAY01 案例1:Shell基礎應用 案例2:簡單Shell指令碼的設計 案例3:使用Shell變數 案例4:變數的擴充套件應用 1 案例1:Shell基礎應用 1.1 問題 本案例要求熟悉Linux Shell環境
shell中區域性變數及local命令
http://blog.csdn.net/wangjianno2/article/details/50200617 感謝 shell中區域性變數及local命令 local一般用於區域性變數宣告,多在在函式內部使用。 (1)shell指令碼中定義的變數是global的,其作用
Linux shell 環境變數及有效範圍
每當我們使用ssh客戶端遠端登陸一個服務時,作業系統就會給我們分配一個新的shell,並且這個shell繼承了作業系統的永久環境變數。在當前的shell執行一個sh檔案,都會臨時產生一個子shell,該檔案執行完畢後,將自動返回到父shell。 子shell會繼承父shell的所有永久環境變數和
shell中的變數及函式
############################1.變數###################################################簡介: (1)什麼是變數? 變數即在程式執行過程中它的值是允許改變的量,變數是用一串固定的字
Linux-shell-curl-put命令變數及換行問題總結
1. 最近在使用shell curl自動處理ETL時,需要定時觸發一API,使用方式為PUT,但是多次觸發均失敗,命令如下:curl -g -i -H "Content-type: application/json" \-X PUT "http://101.201.81.10
linux 下shell 程式設計之變數及數學運算
1.shell中的變數是不分資料型別的,統一按照字串來儲存 2. bash shell只能支援數學整數運算(zsh可以支援浮點) 3.以下都是在bash shell 下進行的數學運算 方法一使用方括號進行基本的整數運算: #!/bin/bash var1=1 var2=2
shell指令碼及makefile中的特殊變數
shell指令碼中的特殊變數 1. $# 傳遞到指令碼的引數個數 2. $* 以一個單字串顯示所有向指令碼傳遞的引數。與位置變數不同,此選項引數可超過9個3. $$ 指令碼執行的當前程序ID號4. $! 後臺執行的最後一個程序的程序ID號5. [email p
02 . Shell變數和邏輯判斷及迴圈使用
#### Shell變數 ##### 系統變數 > 在命令列提示符直接執行 env、set 檢視系統或環境變數。env 顯示使用者環境變數,set 顯示 Shell預先定義好的變數以及使用者變數。可以通過 export 匯出成使用者變數。 `一些寫Shell指令碼時常用的系統變數` ```python
shell介紹及基本用法
shell alias 重定向8.1:shell介紹:shell是一個命令解釋器,提供用戶和機器之間的交互,支持特定語法,支持邏輯判斷、循環,並且每個用戶都可以有自己的shell:Centos默認的shell是bash(Bourne Agin Shell):其實為了紀念sh的創造者bourne這個用戶
shell 變數自增
[[email protected] onecloud]$ cat test_push.sh #!/bin/bash#to test the connectity to gateway.push.apple.com 2195#test 10 time if > 5 ,critical;if &
Shell程式設計及Bash
為什麼學習shell程式設計? 對於一個合格的系統管理員來說,學習和掌握Shell程式設計是非常重要的。通過程式設計,可以在很大程度上簡化日常的維護工作,使得管理員從簡單的重複勞動中解脫出來。 Shell程式的特點: 1、簡單易學。 2、解釋性語言,不需要編譯即可執行。 she
shell變數與數字運算
shell變數與數字運算,變數與數字不能直接運算。 變數與數字直接運算,結果是play+1,如下所示: play=2 play=play+1 echo $play #輸出結果 play+1 加上let 後,運算結果正確,示例如下: play=2 let play=play+1 ec
我們一起學shell之三:shell變數講解
今天我們來學習shell變數相關的內容。 在實際工作中,無論linux下還是windows下,變數都是實時使用並且相關的。 在linux伺服器下,我們檢視環境變數或系統變數使用的常用命令: env或set env顯示使用者環境變數,set顯示Shell預先定義好的變數以及使用者變
python中的的各型別變數及作為引數的特點
概念: 所有的變數都可以理解為記憶體中的一個物件的“引用”。型別是屬於物件的,而不是變數。而物件有兩種,“可更改”與“不可更改”物件。在python中,strings,tuples和numbers是不可更改的物件,而list,dict,set等則屬於可以修改的物件。 下面來看下例子(numb
shell 變數賦值運算
1.變數賦值: name=lbg 等號前後不能有空格 name="Lebron James" 變數值中有空格要用雙引號 echo ${name} 用${}更保險 shopt -s -o nounse
【Shell基礎篇】Shell 變數
1.shell變數 注意不能有空格 由字母、下劃線和數字組成shell變數,不能由數字開頭 有效:_var, ersa, my_var 無效:12a, a+a 2.Shell字串 單引號、雙引號 單引號一般用於一條字串原樣輸出,變數無效 雙引號使用較為靈活,可以使用轉義字元,可以