Shell指令碼之 變數

2022-05-02 23:12:07 字數 1511 閱讀 7403

與編譯型語言不同,shell指令碼是一種解釋型語言。

執行這類程式時,直譯器(interpreter)需要讀取我們編寫的源**(source code),並將其轉換成目標**(object code),再由計算機執行。

linux預設的指令碼解析器是bash。

參考資料 

第乙個shell指令碼

下面演示我們的第乙個shell指令碼,使用文字編輯器(如vi),鍵入如下**並儲存為hello.sh

#!/bin/bash

# 列印hello world

echo

"hello world !

"

然後給該指令碼賦予執行許可權

chmod +x ./hello.sh
然後執行該指令碼,終端就會顯示hello world!

其中指令碼第一行#!/bin/bash 指明了該指令碼的直譯器

sh裡沒有多行注釋,只能每一行加乙個#號

read命令

下面的指令碼使用read命令從 stdin 獲取輸入並賦值給 person 變數,最後在 stdout 上輸出

#!/bin/bash

echo

"what is your name?

"read person

echo

"hello, $person

"

下面是運**況

shell變數

定義變數

variablename="

value

"

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

name="

runnyu

"echo $

花括號可加可不加,加花括號是為了幫助直譯器識別變數的邊界。使用readonly+變數名可以將變數定義為唯讀變數,unset+變數名可以刪除變數

readonly

name

unset name

特殊變數編寫special.sh測試

#!/bin/sh

echo

"pid=$$

"echo "$0

"echo "$1

"echo "$2

"echo "$#

"echo "$*

"

執行結果

$* 和 $@ 都表示傳遞給函式或指令碼的所有引數,不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出所有引數。

但是當它們被雙引號(" ")包含時,"$*" 會將所有的引數作為乙個整體,以"$1 $2 … $n"的形式輸出所有引數;"$@" 會將各個引數分開,以"$1" "$2" … "$n" 的形式輸出所有引數。

shell指令碼工具之變數

shell中的變數型別分為環境變數,位置變數,特殊變數以及使用者自定義變數,每種變數都有其特殊的功能.系統變數 是由系統預設的變數,部分變數的值是由系統預設指定 位置變數 是根據在命令列的引數與命令列中的每乙個引數關聯 特殊變數 與環境變數相似 自定義變數 由使用者自己定義的變數,並賦值 一.系統變...

shell指令碼之變數替換

shell提供了變數替換功能,使使用者能夠檢查變數的值並根據選項改變它的值。variable 儲存在variable中的值 儲存在variable中的值 如果variable的值非空,則值為variable,否則值為string 如果variable的值非空,則值為string,否則值為空 如果va...

Shell之變數操作

1.定義變數 為了避免與環境變數衝突,一般用小寫 如pp mydql,kdkfeof 第二賦值方案 呼叫變數使用 符號 變數疊加 2.輸出採用echo,如上圖所示 3.變數分類 自定義變數和環境變數。4.檢視 set 檢視所有變數及其值 5.刪除變數 unset 變數名,如 6.作用範圍 自定義變數...