linux写程序四则运算,Shell编程之变量及四则运算
Shell的學習目標
Shell的基本語法結(jié)構(gòu): 如:變量的定義、條件判斷、循環(huán)語句(for、until、while)、分支語句、函數(shù)和數(shù)組等。
基本正則表達式的應(yīng)用
文件處理:grep、sed、awk工具的使用
使用shell腳本完成復雜的任務(wù):服務(wù)搭建、批量處理。
今日目標
掌握Shell變量的定義和獲取
Shell簡單的四則運算
一、編程語言概述
計算機只能識別機器語言(也就是二進制(0和1))。但是又不能直接使用0和1,必須借助人(工具)來進行翻譯成機器語言。而人(工具)就是常說的編譯器或者是解釋器 。
編程語言的分類
編譯型語言 程序在執(zhí)行之前需要一個編譯過程,把程序編譯為機器語言文件,運行時不需要重新翻譯,直接使用編譯的結(jié)果即可。程序執(zhí)行效率高,以來編譯器,跨平臺性差,如C、C++。
解釋型語言 程序不需要編譯,程序在運行時由解釋器翻譯成機器語言,每次執(zhí)行一次都要翻譯一次。效率比較低。如Python/Javascript/Perl/Ruby/Shell等這些都是解釋型語言。
總結(jié):
編譯型語言比解釋型速度較快,但是不如解釋型語言跨平臺性好。
如果做底層開發(fā)或者是大型應(yīng)用程序或者操作系統(tǒng)一般都用編譯型語言。
如果是一些服務(wù)器腳本及一些輔助的接口,對速度要要求不高。
對于各個平臺的兼容性問題的話一般則是解釋型語言。
二、Shell概述
Shell介于用戶和內(nèi)核之間,負責命令的解釋。
總結(jié): shell是人機交互的媒介。
shell的種類:
[solerho@localhost ~]$ cat /etc/shells
/bin/sh # 是bash的一個快捷方式
/bin/bash # bash是大多數(shù)Linux默認的Shell,包含的功能幾乎涵蓋了shell的所有功能。
/usr/bin/sh
/usr/bin/bash
1、什么是Shell腳本?
需要執(zhí)行的命令保存到文本中,按照順序執(zhí)行。解釋型的語言,所以不需要編譯。
可以使用公式來描述:
若干命令 + 腳本基本格式 + 腳本特定語法 + 思想 = Shell腳本
2、Shell腳本的用途
自動化軟件部署
LAMP/LNMP/Tomcat
自動化管理
系統(tǒng)初始化腳本、批量更改主機密碼、推送公鑰等。
自動化分析處理
統(tǒng)計網(wǎng)站訪問量
自動化備份
數(shù)據(jù)庫備份、日志轉(zhuǎn)儲。
自動化監(jiān)控腳本
3、Shell腳本的基本寫法
3.1 腳本的第一行:字符#!指定解釋器【必寫】
#!/bin/bash 表示以下內(nèi)容使用bash解釋器解析。
注意點: 如果直接將解釋器路徑固定在腳本里,可能有些系統(tǒng)會存在找不到解釋器的兼容性問題,所以,可以使用 #!/bin/env 解釋器進行解析。
3.2 腳本的第二部分:注釋(#)號說明,對腳本的基本信息進行描述。 例如:
#!/bin/env bash
# Name:Soler HO
# Desc:description
# path:存放路徑
# 下面是腳本的具體內(nèi)容
commands
…...
3.3 腳本的第三部分:腳本要實現(xiàn)的具體代碼內(nèi)容。
4、Shell腳本的執(zhí)行方式
4.1 切換到shell腳本所在的目錄(此時叫做工作目錄)執(zhí)行shell腳本
4.2 以絕對路徑的方式去執(zhí)行bash shell腳本
4.3 直接使用bash 或sh 來執(zhí)行bash shell腳本
4.4 在當前的shell環(huán)境中執(zhí)行bash shell腳本
三、變量的定義
1、什么是變量?
可以變化的數(shù)據(jù),是用來臨時保存數(shù)據(jù)的。
2、變量的定義格式
變量名=變量值
變量名:用來臨時保存數(shù)據(jù)。
變量值:臨時可變化的數(shù)據(jù)。
例如:
A = hello shell
echo $A #調(diào)用變量,必須使用$符號
echo ${A}
$A和${A}的區(qū)別:
相同點:都是可以調(diào)用變量
不同點:${變量名}可以截取變量的某一部分,而$變量名 不可以。
3、變量的定義規(guī)則
變量名區(qū)分大小寫
變量名不能有特殊符號
如果是有空格的字符串給變量賦值時,需要使用引號。
變量名不能以數(shù)字開頭。
注意點:不能以數(shù)字開頭不代表不能包含數(shù)字。
等號的兩邊不能有任何空格。
變量名盡量做到見其名知其意。
一般來說,變量名使用大小寫均可。
4、交互式定義變量read
目的:讓用戶自己給變量賦值,比較靈活。
語法:read [選項] 變量名
常見的選項:
選項
釋義
-p
定義提示用戶的信息
-n
定義字符數(shù)(限制變量值的長度)
-s
不顯示(不顯示用戶輸入的內(nèi)容)
-t
定義超時時間,默認單位為秒(限制用戶輸入變量值的時間)
例子:
變量值來自文件的例子:
5、定義有類型的變量(declare)
目的:給變量做一些限制,固定變量的類型。例如:整型,只讀等。
用法:declare 選項 變量名=變量值
常用的選項:
選項
釋義
例子
-i
將變量設(shè)置成整數(shù)
declare -I A=23
-r
定義只讀變量
declare -r B=shell01
-a
定義普通數(shù)組;查看普通數(shù)組
-A
定義關(guān)聯(lián)數(shù)組;查看關(guān)聯(lián)數(shù)組
-x
將變量通過環(huán)境導出
declare -x AA=1234 等于 export AA=1234
四、變量的分類
1、本地變量:當前用戶自定義的變量,當前進程中有效,其他的進程及當前進程的子進程無效。
2、環(huán)境變量:當前進程有效,且可以唄子進程調(diào)用。
env — —— 查看當前用戶的環(huán)境變量
set ——— 查詢當前用戶的所有變量(臨時變量與環(huán)境變量)
export 變量名=變量值 或者是 變量名=變量值;export 變量名
3、全局變量:所有的用戶和程序都能調(diào)用,且繼承、新建的用戶也默認能調(diào)用。 相關(guān)配置文件的介紹
文件名
說明
備注
$HOME/.bashrc
當前用戶的bash信息,用戶登陸時讀取
定義別名、umaks、函數(shù)等
$HOME/.bash_profile
當前用戶的環(huán)境變量,用戶登陸時讀取
$HOME/.bash_logout
當前用戶退出當前shell時最后讀取
定義用戶退出時執(zhí)行的程序
$/etc/bashrc
全局的bash信息,所有用戶都有效。
$/etc/profile
全局環(huán)境變量信息
系統(tǒng)和用戶都生效。
注意點:以上的文件修改后,都需要重新source讓其生效或者是退出重新登錄。
用戶登陸系統(tǒng)讀取相關(guān)文件的順序
* /etc/profile
* $HOME/.bash_profile
* $HOME/.bashrc
* /etc/.bashrc
* /etc/.bash_logout
4、系統(tǒng)變量 系統(tǒng)變量(內(nèi)置bash中變量):shell已經(jīng)固定好自身的名字和作用。
內(nèi)置系統(tǒng)變量
含義
$?
上一條命令執(zhí)行后返回的狀態(tài),狀態(tài)值為0表示執(zhí)行正常。非0表示執(zhí)行異常或錯誤。
$0
當前執(zhí)行的程序或腳本名
$#
腳本后面接的是參數(shù)的個數(shù)
$*
腳本后面所有的參數(shù),參數(shù)當成一個整體輸出,每一個變量參數(shù)之間用空格隔開。
$@
腳本后面所有的參數(shù),參數(shù)是獨立,也是全部輸出。
$1-$9
腳本后面的位置參數(shù),$1表示第一個位置參數(shù)。
${10}-${n}
位置參數(shù)的擴展,第10個位置變量起必須擴起來(兩位數(shù)字起就擴起來。
$$
當前所在進程的進程號,如echo $$
$!
后臺運行的最后一個進程號(當前終端)。
!$
調(diào)用最后一條命令歷史中的參數(shù)
實踐操作:
五、四則運算
算術(shù)運算:默認情況下,shell就只能支持簡單的整數(shù)運算。
運算內(nèi)容:加(+)、減(-)、乘(*)、除(/)、求模(余數(shù))(%)。
1、四則運算符號
表達式
實例
$(())
echo $((1+1))
$[]
echo $[10-5]
expr
expr 10/5 注意點:乘法時,要使用轉(zhuǎn)義符(\)即,expr 10*5
let
n=1;let n+=1 等價于 let n=n+1
實例練習:
2、i++和++i
表達式
對變量的影響
對表達式的影響
i++
無
先賦值,再運算
++i
無
先運算,再賦值
實例練習:
文章如有錯誤
請大家給予多多指教
非常感謝
95年金牛座的程序員 感謝你的關(guān)注
公眾號:平頭哥Geek
總結(jié)
以上是生活随笔為你收集整理的linux写程序四则运算,Shell编程之变量及四则运算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux系统如何安装其他包,Linux
- 下一篇: linux 设置时间为昨天,Linux