Linux shell指令碼 變數

2021-09-12 05:44:35 字數 3215 閱讀 2264

一、簡介

shell是一種指令碼語言,那麼,就必須有直譯器來執行這些指令碼。unix/linux上常見的shell指令碼直譯器有bash、sh、csh、ksh等,習慣上把它們稱作一種shell。我們常說有多少種shell,其實說的是shell指令碼直譯器。

二、基本介紹

1、學語言的經典」hello world!

開啟文字編輯器,新建乙個檔案test.sh,擴充套件名為.sh(sh代表shell)。

輸入一些**:

#!/bin/bash

echo "hello world !"

在命令列執行:

chmod +x test.sh && ./test.sh

執行結果:

2、注釋

#!執行**(是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種shell)

其他以#開頭注釋(一般有藍色區分),會被直譯器忽略。sh裡沒有多行注釋,只能每一行加乙個#號。

3、在命令列列印輸出

(1)echo:shell的乙個內部指令,用於在命令列螢幕上列印出指定的字串。

ps:echo後單引號和雙引號作用是不同的。單引號不能轉義裡面的字元。雙引號可有可無,單引號主要用在原樣輸出中。

例如:

(2)printf:格式化輸出語句。

printf 命令用於格式化輸出, 是echo命令的增強版。它是c語言printf()庫函式的乙個有限的變形,並且在語法上有些不同。

如同 echo 命令,printf 命令也可以輸出簡單的字串:

printf 不像 echo 那樣會自動換行,必須顯式新增換行符(\n)。

4、命令列從輸入裝置讀入內容

#!/bin/bash

echo "what is your name?"

read name #輸入

echo "你好, $name"

執行指令碼:

三、變數定義

1、定義變數

格式:變數=值 (預設變數型別是字元型別) abc=123

ps:等號兩邊不能有空格,對同一變數名定義,以最後一次定義的值生效

(1)檢視已定義的變數-set

abc=123

set | grep abc

(2)變數命名規則:

2、使用變數

使用乙個定義過的變數,只要在變數名前面加美元符號($)即可,如:$變數名

abc=123

echo $abc

3、刪除變數-unset

變數被刪除後不能再次使用;unset 命令不能刪除唯讀變數。

四、變數型別

1、區域性變數:

(1)區域性變數在指令碼或命令中定義

(2)僅在當前shell例項中有效

(3)其他shell啟動的程式不能訪問區域性變數

2系統環境變數:

(1)系統啟動時載入系統配置檔案或服務的配置檔案

(2)在檔案中定義的所用使用者都可以呼叫

(3)變數名是固定的,值可以被修改

(4)在寫指令碼時,系統環境變數可以直接被使用或者重新賦值

(5)env  檢視當前所有已經定義的系統環境變數

(6)系統環境變數名一般是大寫

3、shell預定義變數(特殊變數):

在使用的shell(/bin/bash)已經定義好的變數,變數名和變數值都不可以被修改,變數值根據當前的執行環境,隨機獲取的。

(1)$0   當前終端執行程序的程序名   當前執行指令碼

(2)$n   傳遞給指令碼或函式的引數

n 是乙個數字,表示第幾個引數。例如,第乙個引數是$1,第二個引數是$2

(3)$!   當前終端後台執行最後執行程序的pid號

(4)$$   當前終端執行程序的pid號

(5)$#   指令碼或函式位置變數的總個數

(6)$*   指令碼或函式所有位置變數的值

(7)$?   上一條命名執行後的返回狀態

echo $?     0 表示上條命令執行正確    非0 表示上條命令執行不正確

例子:  

[root@ecloud ~]# cat test3.sh

#!/bin/bash

echo "the firiet name: $0"

echo "the first parameter : $1"

echo "the second parameter : $2"

echo "quoted values 1: $*"

echo "total number of parameters : $#"

echo "this pid : $$"

echo "return results :$?"

執行的結果如下:

Linux shell指令碼 (二)shell變數

shell支援自定義變數。定義變數時,變數名不加美元符號 如 variablename value 注意,變數名和等號之間不能有空格,這可能和你熟悉的所有程式語言都不一樣。同時,變數名的命名須遵循如下規則 變數定義舉例 myname wenong mynum 100 myname wenong ec...

linux shell指令碼特殊變數用法

shell本身的pid processid shell最後執行的後台process的pid 最後執行的命令的結束 返回值 使用set命令設定的flag一覽 所有引數列表。如 用 括起來的情況 以 1 2 n 的形式輸出所有引數。所有引數列表。如 用 括起來的情況 以 1 2 n 的形式輸出所有引數。...

Linux Shell指令碼應用 使用變數

1 變數基本操作 定義及賦值 格式 變數名 變數值例如 title beidaqingniao 引用 變數名 例如 echo title 2 雙引號 單引號 反撇號 雙引號 允許變數引用 轉義 單引號 禁止引用 單引號之中的 符號,不會去反向找變數的值,字面列印 轉義 就是它本身 反撇號 數字1左側...