1. 程式人生 > >shell中常見引數及判斷命令

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裡面,

LinuxDNS配置命令方式修改網路

什麼是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 依

MapReducejob引數設定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