1. 程式人生 > >linux shell 語言基礎(3)shell 特殊位置變數、source、sh、bash、./執行指令碼的區別等

linux shell 語言基礎(3)shell 特殊位置變數、source、sh、bash、./執行指令碼的區別等

一、shell 特殊位置變數

$0 檔名及路徑

$1~$n  新增到Shell的各引數值。$1是第1引數、$2是第2引數…

$* 傳遞給指令碼的所有引數列表如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有引數。

$#新增到shell 引數個數

$$ Shell本身的PID(ProcessID)

$? 最後執行命令結束的程式碼(還回值)

[email protected]所有引數列表。如"[email protected]"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有引數。

$- 使用Set命令設定的Flag一覽

二、source、sh、bash、./執行指令碼的區別

.  點命令,就是個點符號(從Bourne Shell而來)是source的另一名稱

source 命令(從 C Shell 而來)執行bash shell的內建命令

bash /bin/bash命令功能要比sh強大

export可新增,修改或刪除環境變數,供後續執行的程式使用。同時,重要的一點是,export的效力僅及於該次登陸操作。登出或者重新開一個視窗,export命令給出的環境變數都不存在了。

export PATH=/bin/bash:$PATH

(點 source bash sh ./執行的檔名)他們之間的區別

第一;點和source 執行方式是等價;即兩種執行方式都是在當前shell程序中執行此指令碼,而不是重新啟動一個shell 而在子shell程序中執行此指令碼。

第二:bash sh (可以無執行許可權)二者的執行檔案不同

./ (必須有執行許可權)三者執行方式是等價的;此三種執行指令碼的方式都是重新啟動一個子shell,在子shell中執行此指令碼。

驗證結果:

[[email protected] ~]#name=dangxu    //定義一般變數

[[email protected] ~]# echo ${name}

dangxu

[[email protected] ~]# cat test.sh   //驗證指令碼,例項化標題中的./*.sh

#!/bin/sh

echo ${name}

[[email protected] ~]# ls -l test.sh  //驗證指令碼可執行

-rwxr-xr-x 1 root root 23 Feb 6 11:09 test.sh

[[email protected] ~]# ./test.sh    //以下三個命令證明了結論一

[[email protected] ~]# sh ./test.sh

[[email protected] ~]# bash ./test.sh

[[email protected] ~]# . ./test.sh   //以下兩個命令證明了結論二

dangxu

[[email protected] ~]# source ./test.sh

dangxu

[[email protected] ~]#

三、取變數或字串的長度方法

echo $a|wc -L

echo ${#a}

expr length "$a"

四、shell數值運算方法

expr

(())

let

bc

$[]

awk

typeset

 

五、read 命令 是bash 內建 幫助:help read

-p 設定提示資訊

-t設定輸入等待時間,單位預設秒