Linux中的shell編程入門系列

shell介紹

  • 什麼是shell
    與Linux交互的命令行界面
    內圓描述了操作系統的核心(比如 LinuxKernel ),而 Shell 和 GUI 一樣作爲用戶和操作系統之間的接口。
    在這裏插入圖片描述

Shell 作爲一種用戶接口,它實際上是一個能夠解釋和分析用戶鍵盤輸入,執行輸入中的命
令,然後返回結果的一個解釋程序(Interpreter,例如在 linux 下比較常用的 Bash )該解釋程序不僅能夠解釋簡單的命令,而且可以解釋一個具有特定語法結構的文件,這種文
件被稱作腳本(Script)。

  • 常用shell
    bash
  • 如何查看自己的默認shell
    可以直接輸入env查看SHELL
    也可以打印SHELL變量來查看
root@DESKTOP-QRQH8GS:~# env | grep SHELL
SHELL=/bin/bash
root@DESKTOP-QRQH8GS:~# echo $SHELL
/bin/bash
  • 如何更換shell
    終端命令:chsh -s /bin/bash
    chsh == change shell

shell編程

hello world

#!/bin/bash -v
# test.sh
echo "Hello, World"
  • #!/bin/bash -v
  1. 該行告訴操作系統使用用 #! 符號之後面的解釋器以及相應的參數來解釋該腳本文件
  2. -v 剛好就是要打印程序的源代碼

shell數值運算常用範例

給變量自動加一


$ i=0;
$ ((i++))
$ echo $i
1
$ let i++
$ echo $i
2
$ expr $i + 1
3
$ echo $i
2
$ echo $i 1 | awk '{printf $1+$2}'
3

如果進行乘法運算,需要對運算符進行轉義,否則 Shell 會把乘號解釋爲通配符,導致語法錯誤

(()) 的運算效率最高。而let 作爲 Shell內置命令,效率也很高,
但是 exprbcawk 的計算效率就比較低。所以,在 Shell 本身能夠完成相關工作的情
況下,建議優先使用 Shell 本身提供的功能。但是 Shell 本身無法完成的功能,比如浮點運
算,所以就需要外部命令的幫助。另外,考慮到 Shell 腳本的可移植性,在性能不是很關鍵的
情況下,不要使用某些 Shell 特有的語法。

用 Shell 的內置命令查看各個命令的類型如下:

$ type type
type is a shell builtin
$ type let
let is a shell builtin
$ type expr
expr is hashed (/usr/bin/expr)
$ type bc
bc is hashed (/usr/bin/bc)
$ type awk
awk is /usr/bin/awk

從1加到某數


#!/bin/bash
# calc.sh
i=0;
while [ $i -lt 10000 ]
do
((i++))
done
echo $i

求模

$ expr 5 % 2
1
$ let i=5%2
$ echo $i
1
$ echo 5 % 2 | bc
1
$ ((i=5%2))
$ echo $i
1

求冪

$ let i=5**2
$ echo $i
25
$ ((i=5**2))
$ echo $i
25
$ echo "5^2" | bc
25

進制轉換
進制轉換也是比較常用的操作,可以用 Bash的內置支持也可以用bc 來完成,例如把 8 進
制的 11 轉換爲 10 進制,則可以:

$ echo "obase=10;ibase=8;11" | bc -l
9
$ echo $((8#11))
9

上面都是把某個進制的數轉換爲 10 進制的,如果要進行任意進制之間的轉換還是 bc 比較
靈活,因爲它可以直接用 ibaseobase 分別指定進制源和進制轉換目標。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章