1. 程式人生 > >shell 的變數及四則運算

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: 非0127: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:擷取32、變數名區分大小寫 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 6declare 定義有型別的變數 -i:將變數看成整數 -r:定義只讀變數 -x:將變數匯出到環境變數 -a:將變數看成陣列 7read 互動式定義變數 -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 1008 取餘 20的平方 1.520 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字串 單引號、雙引號 單引號一般用於一條字串原樣輸出,變數無效 雙引號使用較為靈活,可以使用轉義字元,可以