天天看點

shell script快速入門-基礎文法編輯器執行個體基礎文法

第一個腳本

sh01.sh

#!/bin/bash
echo "hello"      

執行

bash sh01.sh

差別

source: 父程序中執行
bash:子程序中執行      

編輯器

推薦使用sublime編輯器:

sublime配置shell腳本解釋器

執行個體

執行個體 1:姓+名->姓名

#!/bin/bash
# program:  input firstname and lastname, output fullname
# data: 2018-07-11
# author: peng shiyu

read -p "input your firstname:" firstname
read -p "input your lastname:" lastname
echo "your fullname is: $firstname $lastname"      

說明:

第一行

#!

聲明shell

其餘

#

注釋

開頭應該盡量說明檔案功能

執行個體 2:用目前日期建立檔案

#!/bin/bash
# program: create file by date
# date: 2018-07-12
# author: peng shiyu

echo "create start..."

# 檔案名
filename="file-"
date1=$(date +%Y%m%d)
file1="${filename}${date1}.txt"

# 建立檔案
touch $file1
echo "create end!"      

基礎文法

#!/bin/bash
# 上面這句指定腳本

echo "hello  world"
echo "你好,世界!"

# 這是注釋

# 定義變量, 等号前後不能有空格
name="Tom"
age=12

# 使用變量, 三種方式
echo $name      # Tom
echo ${name}    # Tom
echo "${name}"  # Tom

# 删除變量, 列印出空值
unset name
echo $name  # 

# 字元串, 單引号(原樣輸出),雙引号(變量和轉義),不使用
person1=Jack
person2='傑克'
person3="Jack${age}"

echo $person1  # Jack
echo $person2  # Jack
echo $person3  # Jack12

# 擷取字元串的長度
echo ${#person1}  # 4
echo ${#person2}  # 6

# 定義數組
list=("小倉" "小井" "小空")

# 數組分量單獨指派
list[3]="小澤"

# 讀取數組元素
echo ${list[0]}  # 小倉  
echo ${list[1]}  # 小井
echo ${list[2]}  # 小空
echo ${list[3]}  # 小澤

# 擷取數組所有元素
echo ${list[*]}  # 小倉 小井 小空 小澤

# 擷取數組元素個數
echo ${#list[@]}  # 4
echo ${#list[*]}  # 4

# 運算符 表達式和運算符之間要有空格
# 關系運算符 -eq -ne -gt -lt -ge -le 
# 布爾運算符 && ||
# 字元串運算符 = != -z(長度為0傳回true)-n(長度不為0傳回true)str(字元串不為空傳回true)

# 流程控制 if語句 注意空格
a=1
b=2

if [ $a -eq $b ]
    then
    echo "a == b"

elif [ $a -gt $b ] 
    then
    echo "a > b"

else
    echo "a < b"

fi
# a < b

# 流程控制 for循環
for i in 1 2 3 4 5
    do
        echo "line:${i}"
    done
# line:1 line:2 line:3 line:4 line:5

for (( i=0; i<5; i++ ))
    do
        echo "new line: ${i}"
    done
# new line: 0 new line: 1 new line: 2 new line: 3 new line: 4 

# 流程控制 while循環
i=1
while (( $i<5))
    do
        echo "i=${i}"
        let "i++"
    done

# i=1 i=2 i=3 i=4

# 無限循環 for (( ; ; ))
# while : do command done
# while true do command done

# break跳出循環;continue繼續下一次循環      

參考

Shell學習快速入門篇