| 表示方法 | 描述 |
|---|---|
| $n | $1 表示第一個(gè)參數,$2 表示第二個(gè)參數 ... |
| $# | 命令行參數的個(gè)數 |
| $0 | 當前程序的名稱(chēng) |
| $? | 前一個(gè)命令或函數的返回碼 |
| $* | 以"參數1 參數2 ... " 形式保存所有參數 |
| $@ | 以"參數1" "參數2" ... 形式保存所有參數 |
| $$ | 本程序的(進(jìn)程ID號)PID |
| $! | 上一個(gè)命令的PID |
#!/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 ";
下面是運行結果:
BeautifierPlugin Error: Unable to handle "bash" syntax.
-bash-2.05b$ ./chapter2.1.sh winter stlchinathe number of parameter is 2the return code of last command is 0the script name is ./chapter2.1.shthe parameters are winter stlchina$1 = winter ; $2 = stlchina
這個(gè)例子太簡(jiǎn)單了,一點(diǎn)也不實(shí)用,下面來(lái)個(gè)實(shí)用的,如果你看不懂,沒(méi)有關(guān)系,后面的內容會(huì )有詳細解釋。 BeautifierPlugin Error: Unable to handle "bash" syntax.
#!/bin/shif [ $# -ne 2 ] ; thenecho "Usage: $0 string file";exit 1;figrep $1 $2 ;if [ $? -ne 0 ] ; thenecho "Not Found \"$1\" in $2";exit 1;fiecho "Found \"$1\" in $2";
上面的例子中使用了$0 $1 $2 $# $? 等變量,下面是程序的解釋?zhuān)?/p>
下面運行的例子:
BeautifierPlugin Error: Unable to handle "bash" syntax.
./chapter2.2.sh usage chapter2.2.shNot Found "usage" in chapter2.2.sh-bash-2.05b$ ./chapter2.2.sh Usage chapter2.2.shecho "Usage: $0 string file";Found "Usage" in chapter2.2.sh
用戶(hù)定義的變量必須由字母數字及下劃線(xiàn)組成,并且變量名的第一個(gè)字符不能為數字, 與其它UNIX名字一樣,變量名是大小寫(xiě)敏感的. 對于用戶(hù)變量,用戶(hù)可按如下方式賦值: BeautifierPlugin Error: Unable to handle "bash" syntax.
name="Winter"
name="Winter"WINTER=$nameecho "Hello $WINTER !"
這里需要注意一點(diǎn):變量和‘=‘之間不要有空格,‘=‘和賦值也不要有空格,否則shell不會(huì )認為變量被定義。掌握了基本的使用方法,你可以完全開(kāi)始你的編程工作了。不過(guò)有時(shí)候需要未雨綢繆,下面介紹用戶(hù)變量的一些技巧。
SAT=Saturecho Today is ${SAT}day有時(shí)候為了避免變量名和別的字符產(chǎn)生混淆,你最好養成習慣把變量名用{}括起來(lái)。
對于未賦值的變量, Shell以空值對待, 用戶(hù)也可以用unset命令清除給變量賦的值.看一個(gè)例子: BeautifierPlugin Error: Unable to handle "bash" syntax.
#!/bin/shecho "a=$a" ;a=2echo "a=$a" ;unset aecho "a=$a" ;
-bash-2.05b$ ./test.sha=a=2a=
#!/bin/shecho "a=$a" ;#下面增加了readonlyreadonly a=2echo "a=$a" ;unset aecho "a=$a" ;
-bash-2.05b$ ./test.sha=a=2a=2
shell有兩種賦值方式,第一種是直接用下標賦值: BeautifierPlugin Error: Unable to handle "bash" syntax.
name[0]="Tom"name[1]="Tomy"name[2]="John"...
#!/usr/local/bin/bashname=("Tom" "Tomy" "John")for i in 0 1 2doecho $i:${name[$i]} ;done;-bash-2.05b$ ./test.sh0:Tom1:Tomy2:John
| 名稱(chēng) | 描述 |
| PATH | 命令搜索路徑,以冒號為分隔符.注意與DOS下不同的是, 當前目錄不在系統路徑里 |
| HOME | 用戶(hù)home目錄的路徑名,是cd命令的默認參數 |
| COLUMNS | 定義了命令編輯模式下可使用命令行的長(cháng)度 |
| EDITOR | 默認的行編輯器 |
| VISUAL | 默認的可視編輯器 |
| FCEDIT | 命令fc使用的編輯器 |
| HISTFILE | 命令歷史文件 |
| HISTSIZE | 命令歷史文件中最多可包含的命令條數 |
| HISTFILESIZE | 命令歷史文件中包含的最大行數 |
| IFS | 定義SHELL使用的分隔符 |
| LOGNAME | 用戶(hù)登錄名 |
| 指向一個(gè)需要SHELL監視其修改時(shí)間的文件.當該文件修改后, SHELL將發(fā)消息You hava mail給用戶(hù) | |
| MAILCHECK | SHELL檢查MAIL文件的周期,單位是秒 |
| MAILPATH | 功能與MAIL類(lèi)似.但可以用一組文件,以冒號分隔,每個(gè)文件后可跟一個(gè)問(wèn)號和一條發(fā)向用戶(hù)的消息 |
| SHELL | SHELL的路徑名 |
| TERM | 終端類(lèi)型 |
| TMOUT | SHELL自動(dòng)退出的時(shí)間,單位為秒,若設為0則禁止SHELL自動(dòng)退出 |
| PROMPT_COMMAND | 指定在主命令提示符前應執行的命令 |
| PS1 | 主命令提示符 |
| PS2 | 二級命令提示符,命令執行過(guò)程中要求輸入數據時(shí)用 |
| PS3 | select的命令提示符 |
| PS4 | 調試命令提示符 |
| MANPATH | 尋找手冊頁(yè)的路徑,以冒號分隔 |
| LD_LIBRARY_PATH | 尋找庫的路徑,以冒號分隔 |
這些變量,要關(guān)注的最多的就是PATH, 其重要性不要我說(shuō)了吧?
如果你希望把你定義的變量讓其他所有的shell程序都能使用,也就是定義新的環(huán)境變量。你只要使用export關(guān)鍵詞就可以了。例如: BeautifierPlugin Error: Unable to handle "bash" syntax.
export MY_NAME=Winterexport PATH=/home/winter/bin:$PATH
~/.bash_profile
聯(lián)系客服