1. 程式人生 > >bash 指令碼程式設計四 外部引數 IFS

bash 指令碼程式設計四 外部引數 IFS

$0

通過$0可以獲取傳遞來的第一個引數,就是指令碼自己,$1可以獲得第二個引數,比如:

#!/bin/bash
echo "$0"
echo "$1"
執行程式
./test/sh q

看到:

$ ./test.sh q
./test.sh
q

傳遞帶空格的引數

傳遞引數的時候,如果是字串,可以用單引號或者雙引號包起來,表示這是一個完整的引數:

./test.sh 'this is a test'
既然扯到雙引號,要注意,如果在雙引號裡使用了變數,也會用其值替換,比如:
./test.sh "$HOME"
./test.sh
/home/chenshu
$HOME的值被用來作為第二個引數。

同樣,這裡用上單引號就不會取值。

獲得所有外部引數

$* 指得是從第1個引數開始的所有引數(因為是外部引數, 所以指令碼自己就不算在內,也就是不包含第0個引數),

如果沒有指定間隔字元,預設用空格。

比如下面的指令碼:

#!/bin/bash
echo "$*"

這樣呼叫:
./test.sh 'this is a test' 'abc'
結果顯示為:
this is a test abc

指定外部引數的間隔符號

現在設定一下IFS:
!/bin/bash
IFS=^
echo "$*"
結果顯示為:
this is a test^abc

如果IFS設定為換行符,需要這樣寫:

IFS=$'\n'

使用[email protected]基本上和$*一樣,除了IFS設定無效外。

獲得外部引數的數目

有時候,想知道外部引數的數量,可以用$#
#!/bin/bash
IFS=^
echo "$*"
echo "$#"
執行指令碼:
./test.sh 'this is a test' 'abc'
輸出為2,不包含第0個引數。


相關推薦

bash 指令碼程式設計 外部引數 IFS

$0通過$0可以獲取傳遞來的第一個引數,就是指令碼自己,$1可以獲得第二個引數,比如:#!/bin/bash echo "$0" echo "$1" 執行程式./test/sh q看到:$ ./test.sh q ./test.sh q傳遞帶空格的引數傳遞引數的時候,如果是字

bash指令碼程式設計-while迴圈

bash指令碼程式設計: 程式語言: 資料結構 順序執行 選擇執行 條件測試 執行命令或[[ EXPRESSION ]] 執行狀態返回值; if case 迴圈執行 將某程式碼段重複執行多次; 重複執行多少次? 迴圈次數事先已知: 迴圈次數事

bash指令碼程式設計-until、continue、break、while特殊用法、for特殊用法

bash指令碼程式設計 while CONDITION; do 迴圈體 done 進入條件:CONDITION為true; 退出條件:false until CONDITION; do 迴圈體 done 進入條件:false 退出條件:true

基礎bash指令碼程式設計

shell檔案開頭 #!/bin/bash 使用變數 $variable 陣列 定義陣列 array = (var1, var2, var3) 使用陣列元素 ${array[index]| 修改陣列元素 array[index] = var 比較

bash指令碼程式設計基礎

1.1.1 為什麼學Shell Shell指令碼語言是實現Linux/UNIX系統管理及自動化運維所必備的重要工具, Linux/UNIX系統的底層及基礎應用軟體的核心大都涉及Shell指令碼的內容。每一個合格 的Linux系統管理員或運維工程師,都需要能夠熟練地編

Bash指令碼程式設計

  函式 函式需要在使用之前定義;同時,函式支援以檔案的形式進行模組化封裝,其他檔案的呼叫正規化如下: source base_func.sh myFunc # 模組函式呼叫 無參函式 常見的Bash函式,有兩種書寫方式 function myfunc {

Linux初級運維(十五)——bash指令碼程式設計之函式

一、函式         函式:功能,function  程式碼重用的功能。         結構化程式設計,不能獨立執行,需要呼叫

從新手到系統管理員(三):深入探索Linux Bash指令碼程式設計世界

本文由 [茶話匯] – [Qing] 編譯自 [Avishek Kumar] 轉載請註明出處 bash關鍵字 [code language=”bash”] ! esac select { } c

高階Bash指令碼程式設計指南——一本深入學習shell指令碼藝術的書籍

例子清單 4-5. 位置引數 4-6. wh, whois節點名字查詢 5-2. 轉義符 7-1. 什麼是真? 7-7. zmore 8-1. 最大公約數 9-2. 定時輸入 9-9. 下劃線變數 9-17. 變數長度 9-23. 間接引用 9-30. 使用awk來產生偽隨機數 10-19. 巢狀迴

bash指令碼程式設計 筆記

ls: -r遞迴,-s按照大小,-t按照修改時間 cat,tac: -n行號,-b非空行號,-s壓縮空行 chattr:修改檔案屬性:+i永遠不變,-u不可刪除,-c自動壓縮 ln:-s穿越檔案系統建立連結 man,info:info比man詳細 find ~/ -name 'core*' exec rm

菜鳥的Linux之路2 bash指令碼程式設計之一

shell指令碼程式設計    指令碼程式設計是一種程式設計能力的體現。    程式語言分為以下幾類:        1,機器語言        2,組合語言        3,高階語言:            (1)靜態語言:編譯型語言->強型別語言         

bash 指令碼程式設計一 檔案頭,註釋 和 變數

檔案開頭#!/bin/bash#! 是所有linux指令碼檔案開頭的符號, 後面的/bin/bash表示是使用/bin/bash為直譯器來執行本檔案的指令碼執行檔案bash some.sh 或者 sh some.sh 也行,原因是檔案頭已經說明了這是bash直譯器, 所以不會

bash 指令碼程式設計七 將命令輸出儲存到變數中

`符號包含的命令執行完後,可以講其輸出結果儲存到變數中#!/bin/bash v=`java -version` echo $v 執行結果:$ ./install.sh java version "1.6.0_34" Java(TM) SE Runtime Environ

高階Bash指令碼程式設計指南(2):帶著一個Sha-Bang出發

特別說明,Sha-Bang 指的是 ( #! ) 。 在一個最簡單的例子中,一個shell指令碼其實就是將一堆系統命令列在一個檔案中。它的最基本的用處就是,在你每次輸入特定順序的命令時,可以少敲一些字。 以清除/var/log下的某些log檔案的指令碼為例:

高階Bash指令碼程式設計指南.pdf

【下載地址】一本深入學習shell指令碼藝術的書籍這本書假定你沒有任何關於指令碼或一般程式的程式設計知識, 但是如果你具備相關的知識, 那麼你將很容易就能夠達到中高階的水平. . . 所有這些只是UNIX®浩瀚知識的一小部分. 你可以把本書作為教材, 自學手冊, 或者是關於s

高階Bash指令碼程式設計

#!/bin/bash # param.sh#引數替換 {# ${param-default} 如果 param 未宣告,則使用預設值,否則使用null#+ ${param:-default} 如果 param 未設定,則使用預設值,否則使用null     echo "${num-123}, ${num:-

Bash 指令碼程式設計的一些高階用法

## 概述 偶然間發現 ```man bash``` 上其實詳細講解了 ```shell``` 程式設計的語法,包括一些很少用卻很實用的高階語法。就像發現了寶藏的孩子,興奮莫名。於是參考```man bash```,結合自己的理解,整理出了這篇文章。 本文並不包含```man bash```所有的內容,也

CentOS 7 Shell指令碼程式設計第六講 Bash Shell 外部命令和內建命令

開發十年,就只剩下這套架構體系了! >>>   

linux 核心模組程式設計之模組引數

通過巨集module_param指定模組引數,模組引數用於在載入模組時傳遞給模組。 module_param(name, type, perm) name是模組引數的名字 type是這個引數的型別,常見值:bool、int、charp(字串型) perm是模組

講Java專案打包成jar(我使用的idea),在製作bat指令碼訪問,可以外部傳遞引數

先記錄一個工具類,該類是將大文字檔案分割,可以外部指定分割檔案的大小 SplitFile.Java package com.tencent.splitlarge.file; import java.io.*; import java.text.SimpleDateFormat; impor