『壹』 編寫shell腳本獲取本機的網路地址
獲取網路設備參數的命令是ifconfig但是顯示的信息太多,如何能從這些信息中過濾出ip地址呢?
其實很簡單,只需要一行命令
[root@yf3 root]# ifconfig eth0 | grep 'inet' | awk '{print $2}' | sed -e "s/addr\://"
192.168.11.5
這樣ifconfig中的無效信息就被過濾掉了,只剩下本機的ip:192.168.11.5
『貳』 Linux shell 腳本 間接獲取輸入參數的方法
如果是bash,可以用indirect expansion來搞,語法為 ${!var}。
比如
foo=bar
bar=123
echo ${!foo}
會列印 123
再比如下面的腳本,依次列印腳本的各個輸入參數。
#!/bin/bash
var=1
while [ $var -le $# ]
do
echo "Param $var is ${!var}"
let var++
done
不用indirect expansion,也可以用 eval, 比如
#!/bin/bash
var=1
while [ $var -le $# ]
do
eval echo "Param $var is \$$var"
let var++
done
『叄』 shell腳本中怎麼利用參數'
在執行腳本時,後面可以跟參數,例如
./xxx.sh
arg1
arg2
arg3
...
那麼arg1
arg2
arg3
就是傳入的參數,在xxx.sh腳本中要引用參數,則使用$1,$2,$3來引用。
『肆』 shell腳本怎麼用getopts獲取一個參數
while getopts "r:p:h" para; do
case $para in
r) param_r=$OPTARG;;
p) param_p=$OPTARG;;
h) help ; exit 0;;
*) help ; exit 1;;
esac
done
『伍』 如何獲取傳入給shell腳本的最後一個參數
執行「nano test.sh」創建一個新的shell腳本。
腳本test.sh的內容如下:
#!/bin/sh
name=$1
echo "the ${name} are great man!"
給新創建的test.sh的腳本賦可執行許可權,命令為「chmod 755 test.sh」。
執行'./test.sh "xiao wang"'命令,可以看到自己編寫腳本的結果「the xiao wang are great man!」。
"name=$1"中$1為系統提供的位置參數,$0代表程序的名稱,[$1/$2/...]從1開始為傳遞的參數。
linux系統除了提供位置參數還提供內置參數,內置參數如下:
$# ----傳遞給程序的總的參數數目
$? ----上一個代碼或者shell程序在shell中退出的情況,如果正常退出則返回0,反之為非0值。
$* ----傳遞給程序的所有參數組成的字元串。
$n ----表示第幾個參數,$1 表示第一個參數,$2 表示第二個參數 ... $0 ----當前程序的名稱
$@----以"參數1" "參數2" ... 形式保存所有參數
$$ ----本程序的(進程ID號)PID
$! ----上一個命令的PID
『陸』 簡述shell的參數
我們可以在執行 Shell 腳本時,向腳本傳遞參數,腳本內獲取參數的格式為:$n。n 代表一個數字,1 為執行腳本的第一個參數,2 為執行腳本的第二個參數,以此類推……
實例
以下實例我們向腳本傳遞三個參數,並分別輸出,其中 $0 為執行的文件名:
#!/bin/bash
echo "Shell 傳遞參數實例!";
echo "執行的文件名:$0";
echo "第一個參數為:$1";
echo "第二個參數為:$2";
echo "第三個參數為:$3";
為腳本設置可執行許可權,並執行腳本,輸出結果如下所示:
$ chmod +x test.sh
$ ./test.sh 1 2 3
Shell 傳遞參數實例!
執行的文件名:./test.sh
第一個參數為:1
第二個參數為:2
第三個參數為:3
另外,還有幾個特殊字元用來處理參數:
參數處理 說明
$# 傳遞到腳本的參數個數
$* 以一個單字元串顯示所有向腳本傳遞的參數。 如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
$$ 腳本運行的當前進程ID號
$! 後台運行的最後一個進程的ID號
$@ 與$*相同,但是使用時加引號,並在引號中返回每個參數。 如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
$- 顯示Shell使用的當前選項,與set命令功能相同。
$? 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。
#!/bin/bash
echo "Shell 傳遞參數實例!";
echo "第一個參數為:$1";
echo "參數個數為:$#";
echo "傳遞的參數作為一個字元串顯示:$*";
執行腳本,輸出結果如下所示:
$ chmod +x test.sh
$ ./test.sh 1 2 3
Shell 傳遞參數實例!
第一個參數為:1
參數個數為:3
傳遞的參數作為一個字元串顯示:1 2 3
『柒』 linux shell 腳本讀取用戶輸入的參數如何解決
while read var
do
echo $var
done
這樣也是可以的,沒錯。
想回退的話用 ctrl+backspace
『捌』 如何從一個文件讀取shell腳本執行參數
使用source命令可以把一個文件的內容讀取到當前腳本來
例如:
a.conf 裡面有一個變數 aa="1234"
在腳本裡面使用source
#!/bin/bash
source./a.conf(source的時候最好用絕對路徑,我這兒用的相對路徑)
echo$aa