12.Linuxshell程式設計(指令碼傳參)
(建立於2018/1/31)
1.傳遞引數
Press ENTER or type command to continue
#!/bin/bash
echo $0
echo $1
echo $2
執行命令:
./14.sh hello world bye
輸出結果:
./14.sh
hello
world
我們在傳遞了三個引數,hello world bye,但是指令碼中只接到了兩個,因為預設第一個引數$0得到
的是當前檔案路徑,是一個完整路徑,如果我們只要得到檔名不要路徑怎麼做呢
使用basename命令(basename的作用是從檔名中去除目錄和字尾,ru執行basename kernel/include/linux/stddef.h得到stddef.h)
1 #!/bin/bash
2
4 filename=$(basename $0) //注意不要有空格
5
6 echo filename
7 echo $1
8 echo $2
輸出
tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./14.sh hello world bye
filename
hello
world
2.使用$@遍歷所有引數
#!/bin/bash
echo "the number of params:$#" //$#獲取引數個數
for param in "$@"
do
echo "param:$param"
done
./14.sh hello=bitch world byebye
輸出:
the number of params:3
param:hello=bitch
param:world
param:byebye
getopt命令
。。。
shell中的變數
看下邊是一個簡單的指令碼,定義了三個變數,然後輸出,看下下邊的結果。我們期望列印的結果是一個數字,兩個字串。但是隻是列印了前兩個,然後報了一個錯誤,line 5: zhen: command not found,根據提示可以看到zhen 這個命令沒有找到,為什麼它把zhen這個字串當作了命令呢,原因就在於HEHE這個變數後邊的值由於沒有加雙引號,所以只把ren當作了HEHE的值,然後空格後邊的zhen被當作了命令對待,牢記一點,shell程式設計中,空格後邊的都會被當作命令對待,慎用空格
1 #!/bin/bash
2
3 NDK=10
4 JNI="ren zhen ming"
5 HEHE=ren zhen ming
6
7 echo $NDK
8 echo $JNI
9 echo $HEHE
執行結果
root@iZuf67sz57humoriy3o6oiZ:/usr/ndk/temp# ./ren.sh
./ren.sh: line 5: zhen: command not found
10
ren zhen ming
字串中也可以引用變數值
在下邊我把JNI這個變數放在了字串中進行列印
1 #!/bin/bash
2
3 NDK=10
4 JNI="ren zhen ming"
5 HEHE="ren zhen ming"
6
7 echo $NDK
8 echo $JNI
9 echo $HEHE
10
11 echo "$JNI is a good man"
tabstop=8root@iZuf67sz57humoriy3o6oiZ:/usr/ndk/temp# ./ren.sh
10
ren zhen ming
ren zhen ming
ren zhen ming is a good man
root@iZuf67sz57humoriy3o6oiZ:/usr/ndk/temp# ^C
root@iZuf67sz57humoriy3o6oiZ:/usr/ndk/temp#
將命令執行結果賦值給變數
例如我們想得到當前的時間和當前使用者並將它列印出來,這樣做怎麼樣。可以看到命令date和who只是被當作字串列印了
1 #!/bin/bash
2
3 text=date
4
5 text2=who
6
7 echo $text
8 echo $text2
tabstop=8root@iZuf67sz57humoriy3o6oiZ:/usr/ndk/temp# ./ren.sh
date
who
root@iZuf67sz57humoriy3o6oiZ:/usr/ndk/temp#
那麼是不是應該在date命令前加上$,因為我們取變數值就是用的它,試一下,發現什麼都沒有列印
1 #!/bin/bash
2
3 text=$date
4
5 text2=$who
6
7 echo $text
8 echo $text2
實際上應該這樣做
1 #!/bin/bash
2
3 text=$(date)
4
5 text2=$(who)
6
7 echo $text
8 echo $text2
tabstop=8root@iZuf67sz57humoriy3o6oiZ:/usr/ndk/temp# ./ren.sh
Sat Sep 8 11:10:08 CST 2018
root pts/0 2018-09-08 10:13 (101.88.229.243) root pts/1 2018-09-08 10:34 (101.88.229.243) root pts/2 2018-09-08 11:08 (101.88.229.243)
或者這樣做,他們的結果是一樣的,注意這個符號不是單引號,而是你鍵盤右上角esc下邊的那個符號
1 #!/bin/bash
2
3 text=`date`
4
5 text2=`who`
6
7 echo $text
8 echo $text2
相關文章
- scala指令碼程式設計指令碼程式設計
- SELL 指令碼程式設計指令碼程式設計
- Shell 指令碼程式設計陷阱指令碼程式設計
- shell指令碼程式設計筆記指令碼程式設計筆記
- 7.shell指令碼程式設計指令碼程式設計
- Java 指令碼化程式設計指南Java指令碼程式設計
- 初識shell指令碼程式設計指令碼程式設計
- shell指令碼程式設計基礎指令碼程式設計
- awk指令碼語言程式設計指南指令碼程式設計
- 指令碼程式設計之骰子游戲指令碼程式設計
- 高階bash指令碼程式設計(1)指令碼程式設計
- Shell指令碼程式設計初體驗指令碼程式設計
- BASH Shell的指令碼程式設計(轉)指令碼程式設計
- 高階Bash指令碼程式設計指南 一個對指令碼程式設計技術的深入探討指令碼程式設計
- 【學習】Linux Shell指令碼程式設計Linux指令碼程式設計
- 高階bash/shell指令碼程式設計指南指令碼程式設計
- 記錄shell指令碼程式設計相關指令碼程式設計
- HTML5指令碼程式設計HTML指令碼程式設計
- C與指令碼的混合程式設計 (轉)指令碼程式設計
- Linux Shell指令碼程式設計-基礎1Linux指令碼程式設計
- 10分鐘入門Shell指令碼程式設計指令碼程式設計
- Shell指令碼程式設計30分鐘入門指令碼程式設計
- 微信小程式入門教程之三:指令碼程式設計微信小程式指令碼程式設計
- swift指令碼程式設計:一鍵生成AppIconSwift指令碼程式設計APP
- shell指令碼程式設計之選擇控制結構指令碼程式設計
- VBS指令碼程式設計(6)——物件的建立與呼叫指令碼程式設計物件
- Shell程式設計-01-Shell指令碼初步入門程式設計指令碼
- shell指令碼程式設計學習筆記-運算子指令碼程式設計筆記
- shell指令碼程式設計學習筆記——變數指令碼程式設計筆記變數
- Linux Shell指令碼程式設計while語句案例Linux指令碼程式設計While
- Shell指令碼程式設計總結及速查手冊指令碼程式設計
- Linux Shell程式設計(3)——執行shell指令碼Linux程式設計指令碼
- 史上最全shell指令碼程式設計語法上冊指令碼程式設計
- 常用的Oracle指令碼參考Oracle指令碼
- Bash 指令碼程式設計的一些高階用法指令碼程式設計
- shell高效程式設計:shell指令碼從未如此美麗程式設計指令碼
- Redis 實戰 —— 14. Redis 的 Lua 指令碼程式設計Redis指令碼程式設計
- Linux 利器- Python 指令碼程式設計入門(一)LinuxPython指令碼程式設計