亚洲国产精品人久久,亚洲va国产日韩欧美精品色婷婷,久久久久88色偷偷,免费人成黄页在线观看国际

17站長網

17站長網 首頁 腳本 linux shell 查看內容

Shell編程 Shell變量介紹

2022-12-8 15:41| 查看: 2582 |來源: 互聯網

深入淺出Shell編程: Shell 變量 1 系統變量 2 Shell用戶變量 ■2.1 基礎 ■2.2 使用技巧 ■2.3 shell 中的數組 3 shell 環境變量 先不要管Shell的版本,來看看Shell 變量,在Shell中有三種變量:系統變量,環境變量

深入淺出Shell編程: Shell 變量
1 系統變量
2 Shell用戶變量
■2.1 基礎
■2.2 使用技巧
■2.3 shell 中的數組
3 shell 環境變量
先不要管Shell的版本,來看看Shell 變量,在Shell中有三種變量:系統變量,環境變量,用戶變量。其中用戶變量在編程過程中使用最多,系統變量在對參數判斷和命令返回值判斷會使用,環境變量主要是在程序運行的時候需要設置。

1 系統變量

Shell常用的系統變量并不多,但卻十分有用,特別是在做一些參數檢測的時候。下面是Shell常用的系統變量
表示方法  描述 
$n  $1 表示第一個參數,$2 表示第二個參數 ... 
$#  命令行參數的個數 
$0  當前程序的名稱 
$?  前一個命令或函數的返回碼 
$*  以"參數1 參數2 ... " 形式保存所有參數 
$@  以"參數1" "參數2" ... 形式保存所有參數 
$$  本程序的(進程ID號)PID 
$!  上一個命令的PID 
其中使用得比較多得是 $n $# $0 $? ,看看下面的例子:

#!/bin/sh
#This file is used to explain the shell system variable.
echo "the number of parameter is $# ";
echo "the return code of last command is $?";
echo "the script name is $0 ";
echo "the parameters are $* ";
echo "/$1 = $1 ; /$2 = $2 ";

下面是運行結果:
-bash-2.05b$ ./chapter2.1.sh winter stlchina
the number of parameter is 2
the return
 code of last command is 0
the script name is ./chapter2.1.sh
the parameters are winter stlchina
$1 = winter ; $2 = stlchina
這個例子太簡單了,一點也不實用,下面來個實用的,如果你看不懂,沒有關系,后面的內容會有詳細解釋。

#!/bin/sh
if [ $# -ne 2 ] ; then
echo "Usage: $0 string file";
exit 1;
fi
grep $1 $2 ;
if [ $? -ne 0 ] ; then
echo "Not Found \"$1\" in $2";
exit 1;
fi
echo "Found \"$1\" in $2";

上面的例子中使用了$0 $1 $2 $# $? 等變量,下面是程序的解釋:
1.判斷運行參數個數,如果不等于2,顯示使用"用法幫助", 其中 $0 表示就是腳本自己。
2.用grep 在$2 文件中查找$1 字符串。
3.判斷前一個命令運行后的返回值(一般成功都會返回0, 失敗都會返回非0)。
4.如果沒有成功顯示沒找到相關信息,否則顯示找到了。
5.其中/"表示轉義,在"" 里面還需要顯示"號,則需要加上轉義符/" .
下面運行的例子:
./chapter2.2.sh usage chapter2.2.sh
Not Found "usage" in
 chapter2.2.sh
-bash-2.05b$ ./chapter2.2.sh Usage chapter2.2.sh     
echo
 "Usage: $0 string file";
Found "Usage" in
 chapter2.2.sh

2 Shell用戶變量

2.1 基礎
不管系統變量有多少,對于需求來說,總是不夠的。用戶變量是最常用到的變量,使用也十分簡單。

用戶定義的變量必須由字母數字及下劃線組成,并且變量名的第一個字符不能為數字, 與其它UNIX名字一樣,變量名是大小寫敏感的. 對于用戶變量,用戶可按如下方式賦值:

name="Winter"
在引用變量時,需在前面加$符號,用戶也可以在變量間進行相互賦值,如:

name="Winter"
WINTER=$name
echo
 "Hello $WINTER !"

輸出結果應該很清楚:Hello Winter !

這里需要注意一點:變量和'='之間不要有空格,'='和賦值也不要有空格,否則shell不會認為變量被定義。掌握了基本的使用方法,你可以完全開始你的編程工作了。不過有時候需要未雨綢繆,下面介紹用戶變量的一些技巧。

2.2 使用技巧
也可以用變量和其他字符組成新的字,這時可能需要把變量用{}括起,如:

SAT=Satur
echo
 Today is ${SAT}day
輸出結果是: Today is Saturday

有時候為了避免變量名和別的字符產生混淆,你最好養成習慣把變量名用{}括起來。

對于未賦值的變量, Shell以空值對待, 用戶也可以用unset命令清除給變量賦的值.看一個例子:

#!/bin/sh
echo "a=$a" ;
a=2
echo "a=$a" ;
unset a
echo "a=$a" ;

先猜猜結果是什么?
-bash-2.05b$ ./test
.sh
a=
a=2
a=
如果你懂C++,你應該知道有個變量修飾符"const",用于避免程序一不小心對變量進行修改。在shell中,對于用戶變量,你可以使用同樣的修飾符"readonly", 如果我把上面的例子修改成這樣:

#!/bin/sh
echo "a=$a" ;
#下面增加了readonly
readonly a=2   
echo "a=$a" ;
unset a
echo "a=$a" ;

其結果當然會不一樣了:
-bash-2.05b$ ./test
.sh
a=
a=2
a=2
2.3 shell 中的數組
shell變量中還能設置數組,但是不同的shell版本有不同數組賦值方法,而bourne shell 中不支持數組方式。因此,如果不是十分需要,還是建議你不要使用數組。若你的數據結構十分復雜,必須要使用數組,那么我建議你還是選擇別的語言吧,shell不是萬能的。

shell有兩種賦值方式,第一種是直接用下標賦值:

name[0]="Tom"
name[1]="Tomy"
name[2]="John"
...
另一種方式對于不同的shell版本不一樣。bash中賦值:
[code]
#!/usr/local/bin/bash
name=("Tom" "Tomy" "John")
for i in 0 1 2
do echo $i:${name[$i]} ;
done

[html]
上面兩種賦值方式達到的效果一樣。另外,你看見訪問數組元素的方法了嗎?使用${name[index]}的方式。注意第一行使用的是#!/usr/local/bin/bash, 和以前有些不一樣哦。其輸出結果是:
-bash-2.05b$ ./test
.sh   
0:Tom
1:Tomy
2:John

3 shell 環境變量

shell 環境變量是所有shell 程序都會接受的參數。shell程序運行時,都會接收一組變量,這組變量就是環境變量。常用的環境變量:

名稱 描述
PATH 命令搜索路徑,以冒號為分隔符.注意與DOS下不同的是, 當前目錄不在系統路徑里
HOME 用戶home目錄的路徑名,是cd命令的默認參數
COLUMNS 定義了命令編輯模式下可使用命令行的長度
EDITOR 默認的行編輯器
VISUAL 默認的可視編輯器
FCEDIT 命令fc使用的編輯器
HISTFILE 命令歷史文件
HISTSIZE 命令歷史文件中最多可包含的命令條數
HISTFILESIZE 命令歷史文件中包含的最大行數
IFS 定義SHELL使用的分隔符
LOGNAME 用戶登錄名
MAIL 指向一個需要SHELL監視其修改時間的文件.當該文件修改后, SHELL將發消息You hava mail給用戶
MAILCHECK SHELL檢查MAIL文件的周期,單位是秒
MAILPATH 功能與MAIL類似.但可以用一組文件,以冒號分隔,每個文件后可跟一個問號和一條發向用戶的消息
SHELL SHELL的路徑名
TERM 終端類型
TMOUT SHELL自動退出的時間,單位為秒,若設為0則禁止SHELL自動退出
PROMPT_COMMAND 指定在主命令提示符前應執行的命令
PS1 主命令提示符
PS2 二級命令提示符,命令執行過程中要求輸入數據時用
PS3 select的命令提示符
PS4 調試命令提示符
MANPATH 尋找手冊頁的路徑,以冒號分隔
LD_LIBRARY_PATH 尋找庫的路徑,以冒號分隔

這些變量,要關注的最多的就是PATH, 其重要性不要我說了吧?

如果你希望把你定義的變量讓其他所有的shell程序都能使用,也就是定義新的環境變量。你只要使用export關鍵詞就可以了。例如:
export
MY_NAME=Winter
export
PATH=/home/winter/bin:$PATH

上面的程序中,第一行輸出MY_NAME變量,第二行是在環境變量PATH中增加一個路徑/home/winter/bin 。如果你希望這些設置在你登陸unix/linux都有效,你需要把他們加入到你的shell啟動腳本中, 如果是使用bash

~/.bash_profile
其他版本你看一眼就知道了,在你的home目錄下,以"."開頭的文件,一般都會隱藏起來,你需要使用'ls -al'命令來顯示。

本文最后更新于 2022-12-8 15:41,某些文章具有時效性,若有錯誤或已失效,請在網站留言或聯系站長:17tui@17tui.com
·END·
站長網微信號:w17tui,關注站長、創業、關注互聯網人 - 互聯網創業者營銷服務中心

免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!

17站長網微信二維碼

始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!

掃一掃,關注站長網微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        亚洲国产精品人久久,亚洲va国产日韩欧美精品色婷婷,久久久久88色偷偷,免费人成黄页在线观看国际
        麻豆成人综合网| 不卡视频一二三四| 亚洲综合999| 亚洲欧美乱综合| 欧美激情综合五月色丁香小说| 日韩亚洲欧美在线观看| 欧美疯狂做受xxxx富婆| 欧美精品 日韩| 日韩欧美黄色影院| 久久久久久久久久久久久久久99| xnxx国产精品| 欧美国产欧美亚州国产日韩mv天天看完整| 久久综合久久综合亚洲| 欧美激情一区二区三区不卡| 国产女同互慰高潮91漫画| 26uuu色噜噜精品一区二区| 久久久国产一区二区三区四区小说| 国产亚洲成年网址在线观看| 国产精品嫩草99a| 亚洲激情图片qvod| 免费在线视频一区| 国产成人亚洲综合a∨猫咪 | 日韩成人精品在线| 美女在线一区二区| 成人av网址在线| 欧美电影在线免费观看| 久久婷婷色综合| 亚洲成人三级小说| 成人高清在线视频| 欧美不卡在线视频| 亚洲尤物在线视频观看| 国产成人精品网址| 日韩欧美中文字幕制服| 亚洲精品久久嫩草网站秘色| 久久99蜜桃精品| 欧美日韩国产美女| 亚洲美女在线国产| 成人美女视频在线观看| 欧美xxxxx牲另类人与| 亚洲一区二区三区四区的| 国产成人综合网站| 精品国产sm最大网站免费看| 亚洲综合色噜噜狠狠| 国产成人亚洲综合色影视| 91精品久久久久久久99蜜桃 | 亚洲一二三区在线观看| 国产91丝袜在线18| www国产亚洲精品久久麻豆| 洋洋av久久久久久久一区| 高清av一区二区| 欧美国产乱子伦| 国产精品一区专区| 26uuu亚洲综合色| 精品一区二区三区在线观看国产| 欧美日韩国产经典色站一区二区三区| 国产精品视频一区二区三区不卡| 精品一区二区成人精品| 日韩欧美亚洲国产精品字幕久久久| 艳妇臀荡乳欲伦亚洲一区| 91在线视频免费91| 亚洲日本在线a| 一本到高清视频免费精品| 亚洲女人****多毛耸耸8| av成人免费在线| 一区二区成人在线视频| 欧美偷拍一区二区| 三级一区在线视频先锋| 8x福利精品第一导航| 日韩二区三区在线观看| 日韩精品一区二区在线| 久久激情五月激情| 国产日产欧美一区二区三区| 国产成人亚洲精品青草天美| 国产精品久久综合| 91丨九色丨国产丨porny| 亚洲一区二区精品久久av| 欧美美女黄视频| 久久国产精品免费| 中文字幕精品一区二区精品绿巨人| 国产一区二区伦理片| 日韩一区二区在线观看| 美国十次综合导航| 久久久不卡网国产精品一区| eeuss国产一区二区三区| 亚洲图片欧美色图| 久久在线观看免费| 夫妻av一区二区| 亚洲色图欧洲色图婷婷| 欧美手机在线视频| 国产精品综合网| 午夜视频久久久久久| 久久精品视频在线免费观看| 一本大道久久a久久精品综合 | 一区二区久久久| 国产亚洲欧洲997久久综合| 色香蕉久久蜜桃| 国产精品一区在线观看你懂的| 亚洲一卡二卡三卡四卡| 欧美国产在线观看| 欧美一级淫片007| 色中色一区二区| 懂色av中文字幕一区二区三区| 天天综合日日夜夜精品| 中文字幕在线观看一区二区| 日韩精品一区二区三区视频| 色综合天天视频在线观看| 国产福利一区二区| 精品一区二区三区在线播放| 亚洲一二三四区| 亚洲女与黑人做爰| 国产精品高潮呻吟| 国产精品视频在线看| 久久久久国产精品麻豆| 精品三级在线观看| 日韩你懂的在线播放| 555www色欧美视频| 在线播放亚洲一区| 91麻豆精品国产自产在线观看一区 | 麻豆国产精品777777在线| 亚洲电影一级黄| 亚洲不卡一区二区三区| 一区二区国产视频| 天堂精品中文字幕在线| 无码av中文一区二区三区桃花岛| 樱桃视频在线观看一区| 一区二区三区美女视频| 亚洲一二三区视频在线观看| 日韩欧美中文字幕一区| 99久久婷婷国产综合精品| 91丨九色丨蝌蚪富婆spa| 在线视频国产一区| 欧美精品乱码久久久久久| 91麻豆精品久久久久蜜臀| 欧美成人精品1314www| 国产丝袜欧美中文另类| 国产精品久久免费看| 亚洲激情在线激情| 三级影片在线观看欧美日韩一区二区| 日韩中文字幕一区二区三区| 日本免费在线视频不卡一不卡二| 日本91福利区| 国产suv精品一区二区三区| 色婷婷亚洲婷婷| 日韩精品中文字幕在线不卡尤物| 久久丝袜美腿综合| 18成人在线观看| 麻豆精品久久久| 99精品久久久久久| 日韩欧美一区二区在线视频| 中文字幕精品综合| 蜜臀av在线播放一区二区三区 | 欧美片网站yy| 久久精品视频一区| 亚洲午夜电影在线| 福利电影一区二区| 日韩一区二区三区三四区视频在线观看| 久久婷婷成人综合色| 天天影视网天天综合色在线播放| 国产精品91xxx| 欧美一区二区三区小说| 日韩毛片精品高清免费| 激情成人综合网| 欧美群妇大交群中文字幕| 成人欧美一区二区三区在线播放| 日本va欧美va瓶| 欧美性大战久久久久久久蜜臀 | 一本色道久久综合亚洲91| 亚洲精品一区二区三区福利 | 亚洲自拍偷拍网站| 成人在线综合网站| 国产亚洲精品bt天堂精选| 日韩中文字幕区一区有砖一区| 色88888久久久久久影院按摩| 国产午夜亚洲精品理论片色戒| 美女一区二区视频| 777色狠狠一区二区三区| 亚洲一区二区视频在线观看| 色综合天天综合网天天狠天天| 日本一区二区三区四区| 国产精品一区一区| 26uuu国产电影一区二区| 久久国产生活片100| 日韩精品中午字幕| 极品少妇xxxx精品少妇偷拍| 日韩视频中午一区| 久久97超碰色| 2022国产精品视频| 国产精品一品视频| 国产欧美日韩亚州综合 | 欧美久久久影院| 三级欧美在线一区| 亚洲精品一区在线观看| 国产精品一区二区在线播放| 精品对白一区国产伦| 国产久卡久卡久卡久卡视频精品| 久久久亚洲精华液精华液精华液| 国产很黄免费观看久久| 亚洲免费观看高清在线观看| 欧美日韩国产不卡| 国内一区二区视频|