1. 程式人生 > >linux 下shell 程式設計之變數及數學運算

linux 下shell 程式設計之變數及數學運算

1.shell中的變數是不分資料型別的,統一按照字串來儲存

2. bash shell只能支援數學整數運算(zsh可以支援浮點)

3.以下都是在bash shell 下進行的數學運算

方法一使用方括號進行基本的整數運算:

#!/bin/bash


var1=1


var2=2


var=$[$var1+$var2]


echo "var=$var"

輸出結果:

[email protected]:~/xwh$ ./bc.sh 
var=3

解決bash shell 中無法計算浮點數的方法使用bc

基本格式:var =`echo "options;expresstion " |bc`

#!/bin/bash


var1=1


var2=2


var=`echo "scale=4;$var1+$var2"|bc`


echo "var=$var"

輸出結果:

[email protected]:~/xwh$ ./bc.sh 
var=3

以上只是適用較短的運算,如果有多個表示式這種方式就會有點問題,針對這個問題的解決方案就是重定向

基本格式:var=`bc<<EOF

options

statements

expresstions

EOF

`

#!/bin/bash


var1=1


var2=2


var3=3


var4=4


var=`bc<<EOF


        scale=4
        a=($var1+$var2)
        b=($var3+$var4)
        a+b             
        EOF
        `
echo "var=$var"

輸出結果:

[email protected]:~/xwh$ ./bc.sh 
./bc.sh: line 25: warning: here-document at line 18 delimited by end-of-file (wanted `EOF')
(standard_in) 6: illegal character: O
(standard_in) 6: syntax error
var=10

相關推薦

linux shell 程式設計變數數學運算

1.shell中的變數是不分資料型別的,統一按照字串來儲存 2. bash shell只能支援數學整數運算(zsh可以支援浮點) 3.以下都是在bash shell 下進行的數學運算 方法一使用方括號進行基本的整數運算: #!/bin/bash var1=1 var2=2

linuxshell 程式設計擴充套件正則表示式

1. ‘+’ 限定字元 +限定符表示前面字元至少出現一次或者多次。與*不同在於0次或者多次 2. '?' 限定符 ?限定前面的字元最多出現一次。即出現0次或者1次 3. 數線 |和圓括號() 例如

LinuxShell程式設計算術運算和邏輯比較(數值型別、字串型別、檔案型別)

shell程式設計中的算術運算和邏輯比較,主要根據不同運算物件,採用相應的比較、運算方式。 一、數值型 算術運算 ,以變數自增1為例,+ - * / % 等運算方式同理,運算的方式大體四種: i=`expr $i + 1` let i+=1 , let的操作成員不需要

linux中的shell程式設計變數

shell程式設計主要是為了簡化linux系統管理的。 shell中的變數是一種弱型別的變數,c,java等語言是一種強型別的語言。 linux中的所有的變數預設型別都是字元型別的 零、bash變數的分類 bash變數的型別 變數型別

Linuxshell程式設計例項

1.用while語句建立一個根據輸入的數值求累加和(1+2+3+。。。。+n)的shell程式。   while           若干個命令列1        do              若干個命令列2        done    結構 #! /bin/b

linuxshell程式設計print與printf的區別

1,print是ksh的內建命令,而printf是bash的內建命令 2,print 中不能使用%s ,%d 或%c; 3,print 自動換行,printf 沒有自動換行。 比如下面指令碼的輸出:

linuxshell程式設計總結

概念 shell是一種弱型別、解釋型語言,不需要編譯,只需要一個直譯器,這裡我們用bash。 輸入如下命令: more /etc/passwd 可以看到: 當前使用者root登入的時候,預設開啟的命令列使用者介面就是bash,在這個bash中輸

linuxc程式設計訊號量semget,semop,semctl函式

訊號量 今天去參加北京市的植樹志願者活動啦!早上起來的挺早的,6:10就被傑子給叫起來啦,帶著對春天的嚮往,我們坐著不花錢的大巴去做為市領導服務去啦!發了一個小紅帽還有一個紅色的制服。 唉。。。說好

嘗試linuxc程式設計管道

今天試了下管道,感覺挺有意思的~ 現在才發現,原來程序也有這麼多的功能可以實現。管道分類: 根據程序的相互關係,可以分為:匿名管道與命名管道。1   匿名管道:管道是父程序和子程序間,或是子程序與子程序間單向的通訊機制,即一個程序傳送資料到管道,另外一個程序從管道中讀出資料。

shell程式設計變數以及awk命令和rename命令

常用的環境變數可以用env和set檢視,但是最全面的還是man bash來檢視。 在這裡舉例一些常用的環境變數echo $HOSTNAME                  檢視主機名 echo $HOSTTYPE                 檢視主機系統型別 echo

Linuxsocket程式設計多執行緒TCP伺服器

程式碼如下: thread_server.c #include<string.h> #include<stdlib.h> #include<stdio.h> #include<sys/types.h> #i

Linuxsocket程式設計多程序TCP伺服器端

程式碼如下: tcp_server.c #include<string.h> #include<stdlib.h> #include<stdio.h> #include<sys/types.h> #includ

linuxshell程式設計除錯方法,gdb工具的使用

原帖:向日葵智慧前言windows 的介面操作非常豐富,對程式開發也是如此,各種強大的 IDE 真是非常方便。轉入 linux 程式設計後,沒有介面,用 vim gcc 搞程式開發,一開始還真是不適應。現在用的多了,反而習慣用 linux 開發了。但是,沒法除錯程式真是太痛苦

Linuxsocket程式設計UDP簡單實現

本文實現一個簡單的UDP小例子,來說明Linux下socket程式設計之UDP的簡單實現。本文主要包括三個部分:伺服器端的實現,客服端的實現和通訊測試。實現的功能:客服端傳送一條訊息給伺服器端,伺服器

LinuxShell程式設計錯誤記錄

錯誤描述:((: 08: value too great for base (error token is “08”) 編寫指令碼建立給定字首的31個目錄。程式的目的是建立31個目錄,但是建立到第8個時出現了錯誤,錯誤描述如上。推測提示的含義是:系統將08看做

shell程式設計變數型別

shell程式設計中系統預設所有變數都是字串型。當需要用到其他型別的變數是需要手動宣告。宣告格式如下: declare [+/-][選項] 變數名     -i 將變數宣告為整型     -a 將變數宣告為陣列型別     -x 將變數宣告為環境變數     -r 將變數宣

linuxc程式設計gdb除錯

之前在個人微信公眾號寫了一篇關於linux下c程式設計之gcc編譯的文章,感興趣可關注我的個人微信公眾號,搜尋移動開發與網路安全技術棧加關注,或掃描本文末尾的微信二維碼加關注。 今天接著說下linu

Linux網路程式設計自定義協議進行併發多客戶端與伺服器的通訊(多程序處理併發)不足佔用資源太多

自定義協議訊息體*********msg.h*************#ifndef _MSG_H_#define _MSG_H_struct msg{ char head[10]; //頭部 char msg_chck; //效驗碼 char buff[512];/

1.shell程式設計變數的高階用法

1.1.變數替換 變數替換的六種形式   例項:非貪婪和貪婪的區別 從頭部刪除 [root@VM_0_9_centos shell_learn]# var_1="i love you,do you love me" [root@VM_0_9_centos shell_learn]

01 shell程式設計變數定義

#### 一、SHELL介紹 ㈠ 什麼是shell指令碼? ```bash 簡單來說就是將需要執行的命令儲存到文字中,按照順序執行。它是解釋型的,意味著不需要編譯。 若干命令 + 指令碼的基本格式 + 指令碼特定語法 + 思想= shell指令碼 ``` ㈡ 什麼時候用到指令碼? ```bash 重複化、複