SHELL腳本語言
今天開始學習shell語言
Shell 腳本
Shell 腳本(shell script),是一種為 shell 撰寫的腳本程式,
業界所說的 shell 通常都是指 shell 腳本,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念,
由于習慣的原因,簡潔起見,本文出現的 “shell編程” 都是指 shell 腳本編程,不是指開發 shell 自身,
Shell腳本入門
Shell echo命令
Shell 的 echo 指令與 PHP 的 echo 指令類似,都是用于字串的輸出,命令格式:
echo string
可以使用echo實作更復雜的輸出格式控制,
第一個shell腳本:
打開終端
創建并打開vim helloworld.sh
編輯第一個腳本:
echo “helloworld”
運行shell腳本有三種方式:
- 使用最高權限打開: ./helloworld.sh
- 使用sh命令打開:sh.helloworld.sh
- 使用bash方法打開:bash.helloworld.sh
第二個shell腳本::多命令處理
打開終端創建并編輯vim touch.sh,命令如下:
vim touch.sh
#!/bin/bash
cd /home/df/桌面
touch baz.txt
echo "I love xiaowugui" >>baz.txt #">>是把編譯的內容追加到指定檔案"
:wq #退出并保存
然后執行 sh.touch.sh,會發現桌面上會多出來一個baz.txt 打開Vi baz.txt會發現輸出陳述句
“ I love xiaowugui”
上面的多命令分為四步:
先進入到cd /home/df/桌面
然后創建touch baz.txt
輸出陳述句echo “I love xiaowugui”
最后追加到echo “I love xiaowugui” >>baz.txt
常用變數
自定義變數
一:基礎語法
定義變數:變數=值;
a=2
echo $a
輸出2
有人說我不想用這個變數了怎么辦
unset [變數名] 進行洗掉
宣告靜態變數:readonly ss=2 靜態變數不能使用unset洗掉
readonly ss=2
echo $ss
輸出2
unset ss
bash: unset: ss:無法取消設定: 只讀 variable
Shell變數命名規則
變數名必須是以字母或下劃線字符“_”開頭,后面跟字母、數字或下劃線字符,不要使用?、*或其他特殊字符命名你的變數,
注意:
變數名和等號之間不能有空格;
首個字符必須為字母(a-z A-Z)
中間不能有空格,可以是下劃線
不能使用標點符號
變數里的空格需要用“”隔開
不能使用bash里的關鍵字
二:如何把變數提升到全域變數,可供其他程式使用
export [變數名]:讓這個變數升級為全域變數讓其他程式也可以使用
#先定義變數D
D=1
#然后再編輯C
vim c.sh
echo = "helloworld"
echo $D
#將B放入c中
#然后輸出C
echo $C
#結果只有helloworld
export D
#再輸出C
echo $C
helloworld
1
以上就是全域變數的用法
1.特殊變數:$n
1.基本語法
$n(功能描述:n為數字,$0代表該腳本名稱,$1-
9
代
表
第
一
到
第
九
個
參
數
,
十
以
上
的
參
數
需
要
用
大
括
號
包
含
,
如
9代表第一到第九個引數,十以上的引數需要用大括號包含,如
9代表第一到第九個參數,十以上的參數需要用大括號包含,如{10})
#1.輸出該腳本檔案名稱,輸入引數1和輸入引數2的值
$touch parameter.sh $vim parameter.sh
#! /bin/bash echo “$0 $1 $2 $3”
$ chmod 777 parameter.sh
運行此腳本:bash parameter.sh 則結果為paramerter.sh
命令:bash parameter.sh a 則結果paramerter.sh a
#依次類推,命令parameter.sh a b c d 則結果:parameter.sh a b c 不顯示第四個引數
2.特殊變數:$
1)基本語法:$#(功能描述:獲取所有輸入引數個數,常用于回圈)
(2)案例實操:獲取輸入引數的個數
$vim parameter.sh
#/bin/bash
echo “$0 $1 $2”
echo $#
獲取權限:Chmod 777 parameter.sh
執行腳本:./parameter.sh a b
結果:parameter.sh a b 2
3.特殊變數:$* $@
? ( 功 能 描 述 : 這 個 變 量 代 表 命 令 行 中 所 有 的 參 數 , *(功能描述:這個變數代表命令列中所有的引數, ?(功能描述:這個變量代表命令行中所有的參數,*把所有的引數看成一個整體)
@ ( 功 能 描 述 : 這 個 變 量 也 代 表 命 令 行 中 所 有 的 參 數 , 不 過 @(功能描述:這個變數也代表命令列中所有的引數,不過 @(功能描述:這個變量也代表命令行中所有的參數,不過@把每個引數區分對待)
4.特殊變數:$?
(1)基本語法:$?(功能描述:最后一次執行的命令的回傳狀態,如果這個變數的值為0,則證明上一個命令正確執行;如果這個變數的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確)
(2)案例實操:判斷helloworld.sh腳本是否執行正確
#執行腳本
./helloworld.sh
#結果為:
hello world
#輸入命令:
echo $?
顯示結果為0 就是執行正確,非0,則不正確
Shell 注釋
以 # 開頭的行就是注釋,會被解釋器忽略,
通過每一行加一個 # 號設定多行注釋,像這樣:
#--------------------------------------------
#這是一個注釋
#author:菜鳥教程
#site:www.runoob.com
#slogan:學的不僅是技術,更是夢想!
#--------------------------------------------
#####用戶配置區 開始 #####
#
#
#這里可以添加腳本描述資訊
#
#
#####用戶配置區 結束 #####
多行注釋
多行注釋還可以使用以下格式:
:<<EOF
注釋內容...
注釋內容...
注釋內容...
EOF
EOF 也可以使用其他符號:
:<<'
注釋內容...
注釋內容...
注釋內容...
'
:<<!
注釋內容...
注釋內容...
注釋內容...
!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/249841.html
標籤:其他
