Shell script: 整數(shù) vs 字符串

在Linux Shell中,Bash是最常用的一種。Bash語言中,變量定義的時(shí)候是不需要指定類型的,因?yàn)樗凶兞慷际亲址愋偷摹?/p>

但有的時(shí)候,我們需要一個(gè)變量存的是整數(shù),這樣,我們可以方便對(duì)其加加減減。這如何做到呢?

Bash語言其實(shí)是支持算術(shù)操作和比較的,這要求變量中存的每一個(gè)字符都是數(shù)字。如 VAR=123,這樣的變量可以進(jìn)行算術(shù)操作或比較;而VAR=abc,這樣的變量就不行了。

1 Bash語言中的算術(shù)操作:

雙圓括號(hào)被用于告訴Bash,括號(hào)中的內(nèi)容是算數(shù)操作:

$((算術(shù)操作))

例如:

# VAR=123
# ((VAR++))
# echo $VAR
124

# ((VAR=42))
# echo $VAR
42

# for ((VAR=0; VAR<10; VAR++))
> do
>     echo $((VAR + VAR + (2 * VAR)))
> done
0
4
8
12
16
20
24
28
32
36

一個(gè)錯(cuò)誤的例子:

# VAR=abc
# ((VAR++))
# echo $VAR
1

2 Bash中的算數(shù)比較:

# VARIABLE=123
# if [ $VARIABLE -eq 123 ] ; then echo yes ; else echo no ; fi
yes

或者

# VARIABLE=123
# if [ $VARIABLE == 123 ] ; then echo yes ; else echo no ; fi
yes

還有很多算術(shù)比較的關(guān)鍵字,如:-ge (大于或等于),-gt(大于)... ,這些符號(hào)可以通過 man test 命令查到:

# man test

[(1)                         User Commands                        [(1)

NAME
       test - check file types and compare values

SYNOPSIS
       test EXPRESSION
       [ EXPRESSION ]
       [ OPTION
...

參考文獻(xiàn)

  1. Advanced Bash-Scripting Guide: 4.3. Bash Variables Are Untyped
  2. Stack Overflow: How to use double or single brackets, parentheses, curly braces
  3. Bash Reference Manual 3.5.5 Arithmetic Expansion
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在Linux Shell中有很多的特殊符號(hào),這對(duì)于我們寫Shell腳本時(shí)要特別留意:一方面要知道這些特殊符號(hào)的用法...
    時(shí)待吾閱讀 554評(píng)論 0 4
  • 一,shell題記 不懂shell的程序員不是好程序員,學(xué)習(xí)shell是為了自動(dòng)化,使用自動(dòng)化可以非常有效的提高工...
    架構(gòu)師小秘圈閱讀 8,778評(píng)論 3 70
  • 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
    BigJeffWang閱讀 10,474評(píng)論 3 53
  • 一、《蛋糕英語》 二、用兩個(gè)骰子練習(xí)口算 三、學(xué)會(huì)了飛行棋 四、陪媽媽看演唱會(huì)
    龍子虎媽閱讀 228評(píng)論 3 0
  • 越努力,越焦慮,到底是一個(gè)怎樣的心態(tài)? ——————————分割線—————————— 我是家里的小幺,家庭條件還...
    Jiakiki閱讀 205評(píng)論 0 0

友情鏈接更多精彩內(nèi)容