日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux脚本算术函数,Linux基础之bash脚本编程初级-变量与算术运算

發布時間:2025/3/11 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux脚本算术函数,Linux基础之bash脚本编程初级-变量与算术运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是變量?

變量最初來源于數學,指的是非固定的值可變化的數通常用拉丁字母表示。在計算機中變量它依舊指的是可變化的數,只不過表現形式有些變化。它指的是變量名+所指向的內存空間。

以下實驗環境均在CentOS7.2進行

變量的特點

變量分強類型變量,與弱類型變量

強類型變量:變量需事先聲明且需提前定義其變量存儲格式

弱類型變量:不需事先聲明,不需定義變量存儲格式。

bash把所有變量統統視作字符型;bash中的變量無需事先聲明,相當于,把聲明和賦值過程同時實現。

變量名的命名規范:

變量名只能包含數字,字母和下劃線,而且不能以數字開頭。

其命名要求見名知義,命名機制遵循某種法則(駝峰法則);不能使用程序的保留字:if,else,then,while,for...

bash的變量類型及其使用格式

本地變量,環境變量,局部變量,位置參數變量,特殊變量

變量引用格式:$VAR、${VAR}

………………………………………………………………………………………………………………………

本地變量:作用域僅為當前shell進程

變量賦值:name=‘value’

value有如下引用類型

1、直接字符串引用,格式:name="CHARS"[root@centos7?~]#?name1=abc

[root@centos7?~]#?echo?$name1

abc

2、變量引用,格式:name=“$VAR”[root@centos7?~]#?name2=$SHELL

[root@centos7?~]#?echo?$name2

/bin/bash

3、命令引用,格式:name=`COMMAND` | name=$(COMMAND)[root@centos7?~]#?name3=`date`

[root@centos7?~]#?echo?$name3

2016年?08月?14日?星期日?11:16:55?CST

[root@centos7?~]#?name3=$(date)

[root@centos7?~]#?echo?$name3

2016年?08月?14日?星期日?11:17:11?CST

“”:弱引用,其中的變量引用會被替換為變量值;[root@centos7?~]#?name4="$name1"

[root@centos7?~]#?echo?$name4

abc

‘’:強引用,其中的變量引用不會被替換為變量值,而保持原字符串;[root@centos7?~]#?name5='$name1'

[root@centos7?~]#?echo?$name5

$name1

命令set用于顯示已定義的所有變量

撤銷已定義的變量,格式:unset 變量名[root@centos7?~]#?echo?$name5

$name1

[root@centos7?~]#?unset?name5

[root@centos7?~]#?echo?$name5

[root@centos7?~]#

注:在剛接觸bash變量時特別容易搞錯的就是變量的使用格式,有時候該命令引用卻忘記加``或$(),還有就是強引用與弱引用的使用時機。

下面以例子說明本地變量的作用范圍,使用命令bash進入子shell[root@centos7?~]#?bash

[root@centos7?~]#?echo?$name1

[root@centos7?~]#?exit

exit

[root@centos7?~]#?echo?$name1

abc

由實驗可知,作用域僅為當前shell進程。當然上面實驗做的不夠完善,因為并沒有演示在符父shell中其變量是否有效,大家可以在下面補充實驗去驗證。

………………………………………………………………………………………………………………………

環境變量:作用域為當前shell進程及子進程

變量賦值:

有四種賦值格式:

1、export name=value

2、name=value

export name

3、declare -x name=value

4、name=value

declare -x name

注:bash內嵌了許多環境變量(通常全為大寫字符),用于定義bash的工作環境

查看/顯示環境變量 命令

export[root@centos7?~]#?export?|?head?-5

declare?-x?HISTCONTROL="ignoredups"

declare?-x?HISTSIZE="1000"

declare?-x?HOME="/root"

declare?-x?HOSTNAME="centos7"

declare?-x?LANG="zh_CN.UTF-8"

declare -x[root@centos7?~]#?export?|?head?-5

declare?-x?HISTCONTROL="ignoredups"

declare?-x?HISTSIZE="1000"

declare?-x?HOME="/root"

declare?-x?HOSTNAME="centos7"

declare?-x?LANG="zh_CN.UTF-8"

printenv[root@centos7?~]#?printenv?|?head?-5

XDG_SESSION_ID=8

HOSTNAME=centos7

SELINUX_ROLE_REQUESTED=

TERM=linux

SHELL=/bin/bash

env[root@centos7?~]#?printenv?|?head?-5

XDG_SESSION_ID=8

HOSTNAME=centos7

SELINUX_ROLE_REQUESTED=

TERM=linux

SHELL=/bin/bash

上面四個命令雖然顯示順序略有不同但是所包含的內容都是一樣的[root@centos7?~]#?env?|?wc?-l

24

[root@centos7?~]#?printenv?|?wc?-l

24

[root@centos7?~]#?export?|?wc?-l

24

[root@centos7?~]#?declare?-x?|?wc?-l

24

撤銷環境變量

格式:unset VAR

下面通過例子驗證環境變量的作用范圍[root@centos7?~]#?export?name6=$name2

[root@centos7?~]#?echo?$name6

/bin/bash

[root@centos7?~]#?bash

[root@centos7?~]#?echo?$name6

/bin/bash

………………………………………………………………………………………………………………………

局部變量:作用域僅為某代碼片段(通常用在函數)

因為函數還沒學到,這里不舉例子

………………………………………………………………………………………………………………………

位置變量:當執行腳本的shell進程傳遞的參數

$1,$2,...$(10)...:對應調用第1,第2...第10個參數

………………………………………………………………………………………………………………………

特殊變量:shell內置的特殊功用的變量

$#:傳遞給腳本參數的個數

$*:傳遞給腳本的所有參數;各參數讀成多個獨立字符串

$@:傳遞給腳本的所有參數;各參數讀成一個完整的字符串形式

$?:程序執行狀態返回值,0表示正確,1-255表示失敗

$0:表示命令本身

下面以一個簡單的腳本來給出位置變量與特殊變量的應用[root@centos7?test]#?cat?var1.sh

#!/bin/bash

#

echo?"$1"

echo?"$2"

echo?"$#"

echo?"$@"

echo?"$*"

上面特殊變量及位置變量均需要結合腳本才能使用。$@,$*二者雖然有區別不過在初學時可以不必在意,當學到一定階段接觸了一定的腳本后自然也就會區分二者的不同了。

算術運算

在未學習bash中的算術運算之前如果要計算從1+...+10需要使用管道將其送入bc計算器來解決,

echo {1..10} | tr ' ' '+'| bc很麻煩。而使用bash中的算術運算則可以簡化代碼。

bash中的算術運算格式:有很多種,本文只介紹常用的4種

1)let VAR=算術運算表達式[root@centos7?test]#?let?sum1=1+10

[root@centos7?test]#?echo?$sum1

11

2)VAR=$[算術表達式][root@centos7?test]#?sum2=$[2+2]

[root@centos7?test]#?echo?$sum2

4

3)VAR=$((算術表達式))[root@centos7?test]#?sum3=$((5+5))

[root@centos7?test]#?echo?$sum3

10

4)VAR=$(expr $ARG $OP $ARG2)[root@centos6?~]#?sum4=$(expr?2+8)

[root@centos6?~]#?echo?$sum4

2+8

[root@centos6?~]#?sum4=$(expr?2?+?8?)

[root@centos6?~]#?echo?$sum4

10

這種是調用expr命令計算后面運算表達式,它要求數值與運算符之間有空格,沒有空格則不進行計算,保持運算表達式原本模樣賦值給變量。

注:它與上述三種不同之處還有如果有乘法運算,乘法符號*在第四種里面需要加\進行轉義。

以下為四種算術運算在乘法中的表現[root@centos6?~]#?sum4=$(expr?2?*?8?)

expr:?語法錯誤

[root@centos6?~]#?sum4=$(expr?2?\*?8?)

[root@centos6?~]#?echo?$sum4

16

[root@centos6?~]#?let?sum1=6*6

[root@centos6?~]#?echo?$sum1

36

[root@centos6?~]#?sum2=$[2*3]

[root@centos6?~]#?echo?$sum2

6

[root@centos6?~]#?sum3=$((3*4))

[root@centos6?~]#?echo?$sum3

12

第四種需要轉義,其他三種不需要。

總結

以上是生活随笔為你收集整理的linux脚本算术函数,Linux基础之bash脚本编程初级-变量与算术运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。