中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell變量的示例分析

發布時間:2021-10-14 09:41:44 來源:億速云 閱讀:130 作者:小新 欄目:開發技術

這篇文章主要介紹了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給用戶
MAILCHECKSHELL檢查MAIL文件的周期,單位是秒
MAILPATH功能與MAIL類似.但可以用一組文件,以冒號分隔,每個文件后可跟一個問號和一條發向用戶的消息
SHELLSHELL的路徑名
TERM終端類型
TMOUTSHELL自動退出的時間,單位為秒,若設為0則禁止SHELL自動退出
PROMPT_COMMAND指定在主命令提示符前應執行的命令
PS1主命令提示符
PS2二級命令提示符,命令執行過程中要求輸入數據時用
PS3select的命令提示符
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'命令來顯示。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Shell變量的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黎城县| 精河县| 凤山市| 平武县| 大城县| 承德市| 丰宁| 顺义区| 小金县| 繁昌县| 岳阳市| 大城县| 三原县| 邵阳市| 林西县| 乌海市| 松桃| 犍为县| 新闻| 张家川| 五峰| 阳原县| 鸡东县| 同心县| 门源| 那曲县| 西藏| 中卫市| 宣威市| 蒲城县| 鹿泉市| 额济纳旗| 阿克| 浏阳市| 盐山县| 墨脱县| 中方县| 淮安市| 白朗县| 兖州市| 兴安盟|