Linux Shell程式設計(9)——特殊變數型別
區域性變數
區域性變數只在程式碼塊或一個函式裡有效 (參考函式裡的區域性變數)
環境變數
這種變數會影響Shell的行為和使用者介面
在大多數情況下,每個程式都會有一個"環境表", 它由一組由程式使用的環境變數組成。這樣看來,Shell看起來和其他的程式一樣。
每次一個Shell啟動時,它都會建立新的合適的環境變數。如果它增加或是更新一個環境變數,都會使這個Shell的環境表得到更新(譯者注:換句話說,更改或增加的變數會立即生效),並且這個Shell所有的子程式(即它執行的命令)能繼承它的環境變數。
分配給環境變數的總空間是有限的,如果建立太多的環境變數或有些環境變數的值太長而佔用太多空間會出錯。
如果一個指令碼要設定一個環境變數,則需要將它匯出(”exported”),也就是說要通知到指令碼的環境表。這就是export命令的功能。
一個指令碼只能匯出(export)變數到子程式,也就是說只能匯出到由此指令碼生成的命令或程式中。在一個命令列中執行的指令碼不能匯出一個變數影響到命令列的環境。子程式不能匯出變數到生成它的父程式中。
---
位置引數
命令列傳遞給指令碼的引數是: $0, $1, $2, $3 . . .
$0是指令碼的名字,$1是第一個引數,$2是第二個引數,$3是第三個,以此類推。[1] After $9, 在位置引數$9之後的引數必須用括號括起來,例如:${10}, ${11}, ${12}.
特殊變數$*和$@ 表示所有的位置引數。
例子:位置引數
由不同的執行名字來呼叫指令碼,一些指令碼能夠以不同的操作來執行。如果要能辦到這一點,指令碼需要檢查變數$0來確定指令碼是如何被呼叫的。也有可能存在符號連結的路徑來呼叫指令碼的情況。
區域性變數只在程式碼塊或一個函式裡有效 (參考函式裡的區域性變數)
環境變數
這種變數會影響Shell的行為和使用者介面
在大多數情況下,每個程式都會有一個"環境表", 它由一組由程式使用的環境變數組成。這樣看來,Shell看起來和其他的程式一樣。
每次一個Shell啟動時,它都會建立新的合適的環境變數。如果它增加或是更新一個環境變數,都會使這個Shell的環境表得到更新(譯者注:換句話說,更改或增加的變數會立即生效),並且這個Shell所有的子程式(即它執行的命令)能繼承它的環境變數。
分配給環境變數的總空間是有限的,如果建立太多的環境變數或有些環境變數的值太長而佔用太多空間會出錯。
如果一個指令碼要設定一個環境變數,則需要將它匯出(”exported”),也就是說要通知到指令碼的環境表。這就是export命令的功能。
一個指令碼只能匯出(export)變數到子程式,也就是說只能匯出到由此指令碼生成的命令或程式中。在一個命令列中執行的指令碼不能匯出一個變數影響到命令列的環境。子程式不能匯出變數到生成它的父程式中。
---
位置引數
命令列傳遞給指令碼的引數是: $0, $1, $2, $3 . . .
$0是指令碼的名字,$1是第一個引數,$2是第二個引數,$3是第三個,以此類推。[1] After $9, 在位置引數$9之後的引數必須用括號括起來,例如:${10}, ${11}, ${12}.
特殊變數$*和$@ 表示所有的位置引數。
例子:位置引數
#!/bin/bash
# 至少以10個引數執行這個指令碼,例如:
# ./scriptname 1 2 3 4 5 6 7 8 9 10
MINPARAMS=10
echo
echo "The name of this script is \"$0\"."
# 用./表示當前目錄
echo "The name of this script is \"`basename $0`\"."
# 去掉路徑名(檢視'basename'命令)
echo
if [ -n "$1" ] # 被測試的變數被雙引號引起
then
echo "Parameter #1 is $1" # 使用引號來使#被轉義
fi
if [ -n "$2" ]
then
echo "Parameter #2 is $2"
fi
if [ -n "$3" ]
then
echo "Parameter #3 is $3"
fi
# ...
if [ -n "${10}" ] # 大於 $9的引數必須用花括號括起來.
then
echo "Parameter #10 is ${10}"
fi
echo "-----------------------------------"
echo "All the command-line parameters are: "$*""
if [ $# -lt "$MINPARAMS" ]
then
echo
echo "This script needs at least $MINPARAMS command-line arguments!"
fi
echo
exit 0
由不同的執行名字來呼叫指令碼,一些指令碼能夠以不同的操作來執行。如果要能辦到這一點,指令碼需要檢查變數$0來確定指令碼是如何被呼叫的。也有可能存在符號連結的路徑來呼叫指令碼的情況。
相關文章
- Shell變數型別有哪些?linux運維shell程式設計變數型別Linux運維程式設計
- Shell程式設計-shell變數1程式設計變數
- Shell程式設計-02-Shell變數程式設計變數
- shell程式設計–bash變數程式設計變數
- linux shell特殊引數Linux
- Linux shell程式設計(一)shell指令碼中的變數詳解Linux程式設計指令碼變數
- Shell程式設計-04-Shell中變數數值計算程式設計變數
- Shell程式設計-shell變數2-位置變數和預定義變數程式設計變數
- Shell程式設計規範與變數程式設計變數
- shell程式設計–bash變數介紹程式設計變數
- 01 shell程式設計規範與變數程式設計變數
- 01 shell程式設計之變數定義程式設計變數
- Shell-變數高階用法 (3) 有型別變數變數型別
- Linux Shell變數Linux變數
- Linux之shell程式設計Linux程式設計
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- shell程式設計02——變數定義與使用程式設計變數
- shell程式設計學習筆記(二):Shell中變數的使用程式設計筆記變數
- Linux之shell變數Linux變數
- shell指令碼程式設計學習筆記——變數指令碼程式設計筆記變數
- Linux從入門到精通系列之SHELL程式設計變數與四則運算Linux程式設計變數
- Linux系統程式設計——特殊程式之孤兒程式Linux程式設計
- Linux入門---(三)Shell程式設計Linux程式設計
- 前端學習 linux —— shell 程式設計前端Linux程式設計
- Linux Shell程式設計(1) – Bash 的基本功能:別名、快捷鍵、歷史命令、輸出重定向、管道符、Shell中特殊符號Linux程式設計符號
- 【學習】Linux Shell指令碼程式設計Linux指令碼程式設計
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- Java程式設計基礎03——進位制運算&資料型別&變數Java程式設計資料型別變數
- 人人都能學會的python程式設計教程2:資料型別和變數Python程式設計資料型別變數
- 【shell程式設計】目錄檔案計數程式設計
- 《Linux系統程式設計訓練營》5_環境變數程式設計Linux程式設計變數
- Linux中bash shell環境變數Linux變數
- Linux基礎之Shell與變數Linux變數
- Linux Shell指令碼程式設計-基礎1Linux指令碼程式設計
- Linux作業系統之Shell程式設計Linux作業系統程式設計
- Linux-shell程式設計入門基礎Linux程式設計
- Linux大資料定製篇 Shell程式設計Linux大資料程式設計
- Shell程式設計程式設計