shell程式設計二

2021-06-20 18:11:31 字數 1429 閱讀 1302

同makefile一樣,符號'#'被用作注釋,也就說shell在解析該指令碼時會忽略這一行,但是'#!'例外。

如果需要將多個命令一起執行,可以將這些命令放在同一行,使用分號分割即可,例如:

#!/bin/bash

date;who

date命令首先被執行,然後是who命令。

通常我們需要顯示一些資訊,可以使用echo命令來實現,例如:

#!/bin/bash

echo "welcome to bash"

預設情況下,echo命令會在呼叫後面新增乙個換行符。這裡使用了一對雙引號來引用乙個字串,類似地,不帶雙引號和帶單引號也能完成同樣的任務,例如:

#!/bin/bash

echo welcome to bash

#!/bin/bash

echo 'text in quote'

那麼這裡有什麼不同呢?

1. echo後面不帶引號時(包括單引號和雙引號),你就不能在輸出的字串中使用分號';',因為分號在shell中被用作命令分隔符,例如:

#!/bin/bash

echo hello;hello

分號後面的hello會被當作hello命令而被執行,而不是字串。

2. 使用單引號時,不會對其中的變數進行解析,例如:

#!/bin/bash

echo '$var'

會直接輸出$var,而echo $var(echo "$var")會對變數var進行解析,並返回其值。

printf命令,同c語言中的printf函式一樣,用於格式化輸出,例如:

#!/bin/bash

printf "hello world"

預設情況下,printf命令並不像echo命令那樣自動在末尾新增乙個換行符,需要我們自己手動新增。這裡再舉乙個print的例子:

#!/bin/bash

printf "%-5s %-10s %-4s\n" no name mark

printf "%-5s %-10s %-4.2f\n" 1 sarath 80.3456

printf "%-5s %-10s %-4.2f\n" 2 james 90.9989

printf "%-5s %-10s %-4.2f\n" 3 jeff 77.564

將會得到這樣的輸出結果:

no    name       mark

1     sarath     80.35

2     james      91.00

3     jeff       77.56

shell程式設計《二》

一 if語句 if expressino then code block elif expression then code block else code block fi fi 比較整 數a 和b是否 相等 if a b 也 可 用 eq 判斷整 數a是否 大於整數 b if a gt b 比較...

shell程式設計 (二)

雜亂模組 上一次的結果碼 對指令碼進行檢測語法錯誤 bash n shell.sh 指令碼 bash x shell.sh 指令碼,單步執行 date s 顯示當前秒數 timedays 提前退出指令碼 exit stat 獲取檔案屬性 一 shell中實現算術運算 a 2 b 5 1 let a ...

shell程式設計 二

在shell程式中,資料用變數來儲存,使用變數時不需要宣告,預設所有變數型別為字串型別 這裡 和 的效果是一樣的.使用set設定位置引數.形如set ls l 這樣的命令則會把ls l的結果以此作為他的引數.環境變數 說明 home 當前使用者主目錄 path 用以搜尋命令的目錄列表,用 分隔 ps...