Shell基礎(三):變量及if 分支

變量

賦值:賦值過程中,變量名,等號,變量值之間必須沒有空格。變量值由可以展開成字符串的任意值。
a=z                       # Assign the string "z" to variable a.
b="a string"              # Embedded spaces must be within quotes.
c="a string and $b"       # Other expansions such as variables can be
# expanded into the assignment.
d=$(ls -l foo.txt)        # Results of a command.
e=$((5 * 7))              # Arithmetic expansion.
f="\t\ta string\n"        # Escape sequences such as tabs and newlines.
使用:$name ${name}
g=filename
h="${g}1"                 # filename1

Here Documents

定義:另一種形式的I/O重定向,用於在腳本文件中嵌入正文文本,然後發送給一個命令的標準輸入。
語法:
command << token         # command 可以接受標準輸入的命令名
text                     # 正文文本
token                    # 指示嵌入文本開始和結束的標記字符串 如:_EOF_
作用:位於Here Documents中的正文文本,其中的雙引號和單引號都會失去其shell的特殊含義。
舉例1:
#! /bin/bash
cat << _EOF_
Hello world!
This is your shell!
_EOF_
舉例2:<<-  shell 會自動忽略正文文本開頭的tab ,可提高腳本可讀性。
#! /bin/bash
cat <<- _EOF_
    <html>
        <head>hello</head>
        <body>this is your shell</body>
    </html>
_EOF_

if分支結構

語法:
if commands; then 
    commands
[elif commands; then
    commands...]
[else
    commands]
fi
退出狀態:命令執行完畢之後(包括shell 腳本,shell 函數),都會給系統返回一個值(0-255),叫退出狀態。默認0代表成功,其它代表失敗。$? 可以查看命令的退出狀態。
ls -d /usr/bin && echo $?  => 0  # 檢測存在的目錄,退出狀態爲0.代表成功。
ls -d /bin/usr && echo $?  => 2  # 檢測不存在的目錄,退出狀態爲2.代表失敗。
判斷表達式:[ expression ]
常用檢測文件表達式:

文件測試表達式

常用檢測字符串表達式:

字符串表達式

常用檢測整型表達式:

整型表達式

現代判斷表達式:[[ expression ]]
支持原test表達式,新增支持 string =~ regex 支持匹配正則判斷。 新增支持==操作符支持類型匹配
#! /bin/bash
# 檢測一個值是不是數字
INT=-5
if [[ "$INT" =~ ^-?[0-9]+$ ]]; then
    echo "this is a number!"
fi
現代整型判斷表達式:(( expression ))
#! /bin/bash
INT=-5
if ((INT == -5)); then 
    echo "this is -5"
fi
結合表達式:
操作符     測試表達式[]      現代表達式[[]] (())
AND            -a             &&
OR             -o             ||
NOT            !              !
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章