shell中常見引數及判斷命令
Shell常用特殊變數
經常會在shell命令中,看到$0, $#, $*, [email protected], $?, $$
這樣的取值,這些代表什麼呢?
變數 | 含義 |
---|---|
$0 | 當前指令碼的檔名 |
$n | 傳遞給指令碼或函式的引數。n 是一個數字,表示第幾個引數。例如,第一個引數是$1,第二個引數是$2 |
$# | 傳遞給指令碼或函式的引數個數 |
$* | 傳遞給指令碼或函式的所有引數 |
$@ | 傳遞給指令碼或函式的所有引數。被雙引號(” “)包含時,與 $* 稍有不同 |
$? | 上個命令的退出狀態,或函式的返回值。成功返回0,失敗返回1 |
$$ | 當前Shell程序ID。對於 Shell 指令碼,就是這些指令碼所在的程序ID |
$*
和 [email protected]
都是將引數一個一個返回
"$*"
將所有引數當做一個整體字串返回 , "[email protected]"
將引數一個一個返回
常用判斷引數
在shell命令檔案中還經常會看到類似與if [ -z "${SPARK_HOME}" ]; then
這樣的判斷語句?是不是也和我一樣很疑惑-z
是什麼含義?
下面是幾個常見的引數,供查詢使用:
-a file exists.
-b file exists and is a block special file.
-c file exists and is a character special file.
-d file exists and is a directory.
-e file exists (just the same as -a).
-f file exists and is a regular file.
-g file exists and has its setgid(2) bit set.
-G file exists and has the same group ID as this process.
-k file exists and has its sticky bit set.
-L file exists and is a symbolic link.
-n string length is not zero.
-o Named option is set on.
-O file exists and is owned by the user ID of this process.
-p file exists and is a first in, first out (FIFO) special file or named pipe.
-r file exists and is readable by the current process.
-s file exists and has a size greater than zero.
-S file exists and is a socket.
-t file descriptor number fildes is open and associated with a terminal device.
-u file exists and has its setuid(2) bit set.
-w file exists and is writable by the current process.
-x file exists and is executable by the current process.
-z string length is zero.
判斷命令
shell中除了有上邊這樣用來判斷檔案是否存在的引數,當然還有判斷兩個數是否相等這樣更常規的命令
例如,if [ $# -gt 0 ]
這樣判斷傳入引數個數是否為0
命令 | 含義 |
---|---|
-eq | 等於 |
-ne | 不等於 |
-gt | 大於 |
-lt | 小於 |
ge | 大於等於 |
le | 小於等於 |
相關推薦
shell中常見引數及判斷命令
Shell常用特殊變數 經常會在shell命令中,看到$0, $#, $*, [email protected], $?, $$這樣的取值,這些代表什麼呢? 變數 含義
shell中區域性變數及local命令
http://blog.csdn.net/wangjianno2/article/details/50200617 感謝 shell中區域性變數及local命令 local一般用於區域性變數宣告,多在在函式內部使用。 (1)shell指令碼中定義的變數是global的,其作用
shell 中的 eval 及 crontab 命令
eval eval會對後面的命令進行兩遍掃描,如果第一遍掃描後,命令是個普通命令,則執行此命令;如果命令中含有變數的間接引用,則保證間接引用的語義。也就是說,eval命令將會首先掃描命令列進行所有的置換,然後再執行該命令。因此,eval命令適用於那些一次掃描無法實現其功能的變數。 eval 執行以下兩個步
第二十四課 shell的特殊符號及cut_sort_wc_uniq_tee_tr_split 命令
20180424一、特殊符號 ‘*‘ 通配符,任意個任意字符‘?‘ 任意一個字符‘#‘ 註釋字符‘\‘ 脫義字符‘|‘ 管道‘$‘ 變量的前綴‘!$‘ 組合,正則裏面表示結尾‘;‘ 多條命令寫到一條,用分號分割 ‘?‘ 用戶的家目錄,後面正則表達式表示匹配符
hbase shell 中的常用的一些命令
由於工作需要,最近這段時間剛開始接觸hbase,在這裡整理一些常用的hbase的命令: 1. 連線上伺服器之後,直接輸入hbase shell,進入到hbase shell console控制檯,hbase的一些命令是在這個控制檯中執行的。 2. list : 檢視hba
Linux程式設計 23 shell程式設計(結構化條件判斷 命令if -then , if-then ... elif-then ...else,if test)
一.概述 在上一篇裡講到了shell指令碼,shell按照命令在指令碼中出現的順序依次進行處理,對於順序操作已經足夠了,但許多程式要求對shell指令碼中的命令加入一些邏輯流程控制,這樣的命令通常叫做 結構化命令。 1.1 使用if - then語句 --最基本的結構化就是if -then語句,格式
【8】caffe的python介面學習:caffemodel中的引數及特徵的抽取
如果用公式 y=f(wx+b) 來表示整個運算過程的話,那麼w和b就是我們需要訓練的東西,w稱為權值,在cnn中也可以叫做卷積核(filter),b是偏置項。f是啟用函式,有sigmoid、relu等。x就是輸入的資料。 資料訓練完成後,儲存的caffemodel裡面,
Linux中DNS配置及用命令方式修改網路
什麼是DNS? DNS(Domain Name System)域名系統,可以將域名與IP地址相互對映的一個分散式資料庫,能夠方便去訪問網際網路,而不去記住計算機讀取的IP數串。例如當我們訪問百度時候,直接可以輸入百度網址,而網址www.baidu.com就是域名
[work] Linux Shell中的陣列及遍歷
在Linux下使用shell的時候,為方便起見,偶爾會用到一下陣列。陣列的申明方式是: [java] view plain copy array=(element1 element2 element3 .... elementN) 也就是直接用圓括號包陣列元素包起來,陣
HTML三大選擇器的使用和命名方式,優先順序,以及選擇器中常見錯誤及解決方法
HTML中的三大選擇器1.標籤選擇器:使用標籤的名稱作為選擇器,選中標籤設定樣式, 特點:可以選中多個標籤,給一堆標籤同時設定樣式書寫方式 標籤名{ 樣式 }2.類選擇器:在標籤中利用class屬性設
根據模型中的引數數量判斷需要的訓練資料的數量
訓練資料的特性和數量是決定一個模型效能好壞的最主要因素。一旦你對一個模型輸入比較全面的訓練資料,通常針對這些訓練資料,模型也會產生相應的結果。但是,問題是你需要多少訓練資料合適呢?這恰恰取決於你正在
shell中的變數及函式
############################1.變數###################################################簡介: (1)什麼是變數? 變數即在程式執行過程中它的值是允許改變的量,變數是用一串固定的字
Android開發中常見問題及解決方案
1、介面對接中的關鍵字解析 在日常介面對接中,經常會出現介面返回的資料節點是java中的關鍵字(類似介面返回 extends 節點),會導致解析異常。針對這種情況有以下的解決方案:1、fastjson 解析的情況下可以使用以下註解如:public class DataBean
shell 中使用grep 來判斷
在shell中,經常會用到grep 檢索某個檔案,查詢是否有字元匹配, 用來判斷流程: 如:查詢打印出來的log中,是否有想要的字串: /usr/app/startup > /usr/config.log grep "NETMASK" /usr/config.l
EL中 empty語法及判斷條件
格式: ${ empty 物件 } 返回結果為Boolean值 只要滿足下面三個條件都返回true 1.物件是否為null 2.字串是否為”” 3.集合長度是否為0
分散式框架dubbo使用過程中常見錯誤及解決
轉載自:http://www.cnblogs.com/digdeep/p/5268779.html 1. Caused by: java.lang.reflect.MalformedParameterizedTypeException 啟動時報錯,原因是dubbo 依
MapReduce中job引數及設定map和reduce的個數
map的個數 在map階段讀取資料前,FileInputFormat會將輸入檔案分割成split。split的個數決定了 map的個數。 影響map個數,即split個數的因素主要有: 1)HDF
linux中常見的檔案操作命令
由於經常在linux釋出工程進行測試,所以要用到linux一些檔案操作命令,再此進行總結,以便以後忘記的時候檢視。 改變目錄:cd 回到使用者目錄 cd或者cd~ 檢視當前目錄:pwd 檢視目錄下的檔案的詳細資訊:ls -l /tmp(顯示的最近一次修改
HTTP中常見方法及對應的Servlet函式
詳細情況檢視RFC文件。: GET: 請求指定的頁面資訊,並返回實體主體。 HEAD: 只請求頁面的首部。 POST: 請求伺服器接受所指定的文件作為對所標識的URI的新的從屬實體。 PUT: 從客戶端向伺服器傳
java程式除錯中常見錯誤及原因彙總
1,類似以下錯誤: TestVar2.java:12: 錯誤: 找不到符號 System.out.pringln("c1="+c1); ^ 符號: 方法 pr