shell中的條件判斷和比較

1? shell 的$! ,$?, $$,$@

  • $n? ? ? ? $1 the first parameter,$2 the second...

  • $#? ? ? ? The number of command-line parameters.

  • $0 ? ? ? ? The name of current program.

  • $? ? ? ? ? Last command or function's return value.

  • $$ ? ? ? ? The program's PID.

  • $! ? ? ? ? ?Last program's PID.

  • $@? ? ? ? Save all the parameters.


almost any shell book will talk about them,from which you can get their detail usages.

2??? Linux SHELL if 命令參數說明

? ? ? –b 當file存在并且是塊文件時返回真

? ? ? ?-c 當file存在并且是字符文件時返回真

  • -d 當pathname存在并且是一個目錄時返回真

  • -e 當pathname指定的文件或目錄存在時返回真

  • -f 當file存在并且是正規文件時返回真

  • -g 當由pathname指定的文件或目錄存在并且設置了SGID位時返回為真

  • -h 當file存在并且是符號鏈接文件時返回真,該選項在一些老系統上無效

  • -k 當由pathname指定的文件或目錄存在并且設置了“粘滯”位時返回真

  • -p 當file存在并且是命令管道時返回為真

  • -r 當由pathname指定的文件或目錄存在并且可讀時返回為真

  • -s 當file存在文件大小大于0時返回真

  • -u 當由pathname指定的文件或目錄存在并且設置了SUID位時返回真

  • -w 當由pathname指定的文件或目錄存在并且可執行時返回真。一個目錄為了它的內容被訪問必然是可執行的。

  • -o 當由pathname指定的文件或目錄存在并且被子當前進程的有效用戶ID所指定的用戶擁有時返回真。

UNIX Shell 里面比較字符寫法:

  • -eq?? 等于

  • -ne??? 不等于

  • -gt??? 大于

  • -lt??? 小于

  • -le??? 小于等于

  • -ge?? 大于等于

  • -z??? 空串

  • =? ?? 兩個字符相等

  • !=??? 兩個字符不等

  • -n??? 非空串

總結:

文檔比較運算符??
-e filename??假如 filename存在,則為真??[ -e /var/log/syslog ]?
-d filename??假如 filename為目錄,則為真??[ -d /tmp/mydir ]?
-f filename??假如 filename為常規文檔,則為真??[ -f /usr/bin/grep ]?
-L filename??假如 filename為符號鏈接,則為真??[ -L /usr/bin/grep ]?
-r filename??假如 filename可讀,則為真??[ -r /var/log/syslog ]?
-w filename??假如 filename可寫,則為真??[ -w /var/mytmp.txt ]?
-x filename??假如 filename可執行,則為真??[ -L /usr/bin/grep ]?
filename1-nt filename2??假如 filename1比 filename2新,則為真??[ /tmp/install/etc/services -nt /etc/services ]?
filename1-ot filename2??假如 filename1比 filename2舊,則為真??[ /boot/bzImage -ot arch/i386/boot/bzImage ]?
字符串比較運算符 (請注意引號的使用,這是防止空格擾亂代碼的好方法)??
-z string??假如 string長度為零,則為真??[ -z "$myvar" ]?
-n string??假如 string長度非零,則為真??[ -n "$myvar" ]?
string1= string2??假如 string1和 string2相同,則為真??[ "$myvar" = "one two three" ]?
string1!= string2??假如 string1和 string2不同,則為真??[ "$myvar" != "one two three" ]?
算術比較運算符??
num1-eq num2??等于 [ 3 -eq $mynum ]?
num1-ne num2??不等于 [ 3 -ne $mynum ]?
num1-lt num2??小于 [ 3 -lt $mynum ]?
num1-le num2??小于或等于 [ 3 -le $mynum ]?
num1-gt num2??大于 [ 3 -gt $mynum ]?
num1-ge num2??大于或等于 [ 3 -ge $mynum ]

本文摘自網絡

+++++++++++++++++++++++++++++++++++++++++++

shell判斷文件,目錄是否存在或者具有權限

文章來源:http://hi.baidu.com/haigang/blog/item/e5f582262d639c118b82a167.html

#!/bin/sh?
myPath="/var/log/httpd/"?
myFile="/var /log/httpd/access.log"?
#這里的-x 參數判斷$myPath是否存在并且是否具有可執行權限?
if [ ! -x "$myPath" ]; then?
???? mkdir "$myPath"?
fi?
#這里的-d 參數判斷$myPath是否存在?
if [ ! -d "$myPath" ]; then?
???? mkdir "$myPath"?
fi?
#這里的-f參數判斷$myFile是否存在?
if [ ! -f "$myFile" ]; then?
???? touch "$myFile"?
fi?
#其他參數還有-n,-n是判斷一個變量是否是否有值?
if [ ! -n "$myVar" ]; then?
????? echo "$myVar is empty"?
????? exit 0?
fi?
#兩個變量判斷是否相等?
if [ "$var1" = "$var2" ]; then?
echo '$var1 eq $var2'?
else?
echo '$var1 not eq $var2'?
fi

注意:if 的格式,語句中的空格不能少。
========================================
shell 判斷語句

流程控制 "if" 表達式 如果條件為真則執行then后面的部分: if ....; then
....
elif ....; then
....
else
....
fi
大多數情況下,可以使用測試命令來對條件進行測試。比如可以比較字符串、判斷文件是否存在及是否可讀等等…   通常用" [ ] "來表示條件測試。注意這里的空格很重要。要確保方括號的空格。?
[ -f "somefile" ] :判斷是否是一個文件
[ -x "/bin/ls" ] :判斷/bin/ls是否存在并有可執行權限
[ -n "$var" ] :判斷$var變量是否有值
[ "$a" = "$b" ] :判斷$a和$b是否相等 ???????? -r file     用戶可讀為真
-w file     用戶可寫為真
-x file     用戶可執行為真
-f file     文件為正規文件為真
-d file     文件為目錄為真
-c file     文件為字符特殊文件為真
-b file     文件為塊特殊文件為真
-s file     文件大小非0時為真
-t file     當文件描述符(默認為1)指定的設備為終端時為真?
#########################################################

含條件選擇的shell腳本
??? 對于不含變量的任務簡單shell腳本一般能勝任。但在執行一些決策任務時,就需要包含if/then的條件判斷了。shell腳本編程支持此類運算,包括比較運算、判斷文件是否存在等。基本的if條件命令選項有: -eq —比較兩個參數是否相等(例如,if [ 2 –eq 5 ])
-ne —比較兩個參數是否不相等
-lt —參數1是否小于參數2
-le —參數1是否小于等于參數2
-gt —參數1是否大于參數2
-ge —參數1是否大于等于參數2
-f — 檢查某文件是否存在(例如,if [ -f "filename" ])
-d — 檢查目錄是否存在
幾 乎所有的判斷都可以用這些比較運算符實現。腳本中常用-f命令選項在執行某一文件之前檢查它是否存在。 ################################################################## 判斷文件是否存在

?#!/bin/sh
today=`date -d yesterday +%y%m%d`
file="apache_$today.tar.gz"
cd /home/chenshuo/shell
if [ -f "$file" ];then
echo "OK"
else
echo "error $file" >error.log
mail -s "fail backup from test"?test@test.com?fi.log










本文轉自 曾哥最愛 51CTO博客,原文鏈接:http://blog.51cto.com/zengestudy/1782365,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454012.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454012.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454012.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab立體坐標定位_無懼密集建筑,小天才立體定位技術帶來最強定位體驗

如今,在可穿戴設備市場中,智能手表占據相當大一部分。而作為核心功能之一的定位,在智能手表中發揮著不可替代的作用,尤其是對于兒童電話手表而言。并且,在技術飛速進步,產品迭代加快的當前,兒童…

vue學習問題總結(一)

使用comopontent組件報錯錯誤信息&#xff1a;vue.js:491 [Vue warn]: Unknown custom element: <todo-item> - did you register the component correctly? For recursive components, make sure to provide the "name" option.代碼&#xff1a;<p>使用…

前端之 JavaScript 基礎

JavaScript 概述 ECMAScript 和 JavaScript的關系 1996年11月&#xff0c;JavaScript 的創造者 Netscape(網景) 公司&#xff0c;決定將 JavaScript 提交給國際標準化組織 ECMA &#xff0c;希望這門語言能夠成為國際標準。次年&#xff0c;ECMA發布262號標準文件&#xff08…

TCPMP0.72RC1的編譯與移植以及自己另外做UI完整方法

我叫張挺&#xff0c;雖然開博&#xff0c;除了轉了一篇黃色文章以外&#xff0c;技術文章從來沒有寫&#xff0c;所以呢&#xff0c;感到很不好意思&#xff01;于是決定還寫一篇在網上也留點痕跡。我這里主要是介紹TCPMP的移植以及如何把這個鳥鳥整到自己的界面中來&#xff…

svga文件如何查看_電腦隱藏文件?如何查看隱藏文件 方法簡單易學

大家好&#xff0c;我是小白一鍵重裝軟件的客服。如何查看隱藏文件呢&#xff1f;有時候不小心把文件夾勾選隱藏后文件就消失了&#xff0c;到底是怎么回事呢&#xff1f;其實這個是電腦上面一些設置開啟了文件隱藏的功能哦&#xff0c;那么下面小白系統帶你了解下如何查看隱藏…

jquery 的animate 的transform

$(function(){ var t 1000; $("#id").animate( {borderSpacing:180}, //180 指旋轉度數 { step: function(now,fix){ $(this).css(-webkit-transform,rotate(nowdeg)); $(this).css(-ms-transform,rotate(nowdeg)); $(this).css(-moz-transform,rotate(nowdeg)); $(…

前端之 BOM 和 DOM

前言 到目前為止&#xff0c;我們已經學過了JavaScript的一些簡單的語法。但是這些簡單的語法&#xff0c;并沒有和瀏覽器有任何交互。也就是我們還不能制作一些我們經常看到的網頁的一些交互&#xff0c;我們需要繼續學習BOM和DOM相關知識。 JavaScript分為 ECMAScript&…

如何給FLV文件加字幕

如何給FLV文件加字幕關鍵字&#xff1a;FFMPEG AVS 字幕 本文只是收集工作中的一點經驗和積累&#xff0c;如果你能從本文中得到收獲&#xff0c;或者得到啟發。那將是我最開心的事情。 本文面向的讀者是對FFMPEG以及AVS有一定基礎的&#xff0c;對電腦有一定基礎的&#xff…

化工圖紙中LISP_必備干貨丨石油化工安裝工程質量與成本控制研究

對于整個石油化工工程來說&#xff0c;石油化工的安裝工程在其中是最重要并且最核心的一個環節&#xff0c;其對石油化工工程的質量有著決定性的作用。從客觀的角度來說&#xff0c;如果石油化工安裝工程在實際的施工過程中出現任何的問題&#xff0c;就會威脅到周邊人群的生命…

[原創]windows server 2012 AD架構 試驗 系列 – 15解決AD復制沖突

[原創]windows server 2012 AD架構 試驗 系列 – 15解決AD復制沖突 這節我詳細說下 ADDS使用stamp來作為解決沖突的依據 Stamp由三塊組成 Version, time stamp , source DC GUID (發生對象修改行為的源DC的GUID) 一般來說沖突分為幾下情況: 1-屬性沖突 你可以用repadmin來查看版…

Python全局變量和局部變量

全局變量和局部變量 定義在函數內部的變量擁有一個局部作用域&#xff0c;定義在函數外的擁有全局作用域。   局部變量只能在其被聲明的函數內部訪問&#xff0c;而全局變量可以在整個程序范圍內訪問。調用函數時&#xff0c;所有在函數內聲明的變量名稱都將被加入到作用域中…

前端之 jQuery 入門

jQuery介紹 jQuery是一個輕量級的、兼容多瀏覽器的JavaScript庫。jQuery使用戶能夠更方便地處理HTML Document、Events、實現動畫效果、方便地進行Ajax交互&#xff0c;能夠極大地簡化JavaScript編程。它的宗旨就是&#xff1a;“Write less, do more.“ jQuery的優勢 一款輕…

python劍指offer替換空格_迷人的算法-劍指offer面試題5:替換空格

題目&#xff1a;請實現一個函數&#xff0c;把字符串中的每個空格替換成"%20"。例如&#xff0c;輸入"We are happy."&#xff0c;則輸出"We%20are%20happy."。此題看似簡單&#xff0c;實則坑還是比較多的。替換字符的長度有變化&#xff0c;由…

音頻視頻解決方案:GStreamer/ffmpeg/ffdshow/directshow/vfw

音頻視頻編程相關&#xff1a;GStreamer/ffmpeg/directshow/vfw linux和window下幾種流行的音頻視頻編程框架作一個總結&#xff0c;防止自己迷惘&#xff0c;免于暈頭轉向。 一、GStreamer GStreamer is a library that allows the construction of graphs of media-handlin…

Linux 將進程放入后臺執行,解決網絡,ssh斷開導致進程結束(nohup, setsid, , disown)...

Linux 將進程放入后臺執行&#xff0c;解決網絡&#xff0c;ssh斷開導致進程結束&#xff08;nohup, setsid, &, disown&#xff09; 1、nohup 命令 我們知道&#xff0c;當用戶注銷&#xff08;logout&#xff09;或者網絡斷開時&#xff0c;終端會收到 HUP&#xff08;…

bzoj1927

1927: [Sdoi2010]星際競速Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 2556 Solved: 1580[Submit][Status][Discuss] Description 10年一度的銀河系賽車大賽又要開始了。作為全銀河最盛大的活動之一&#xff0c;奪得這個項目的冠軍無疑是很多人的夢想&#xff0c;來自杰…

python until怎么用_python基礎之從認識python到python的使用

python的歷史&#xff1a;python的創始人是吉多范羅蘇姆(Guido van Rossum)&#xff0c;人稱“龜叔”&#xff0c;1989年圣誕節期間&#xff0c;Guido開始寫Python語言的編譯器。他希望這個叫做Python的語言能符合他的理想&#xff1a;創造一種C和shell之間&#xff0c;功能全面…

前端之同源策略 Jsonp 與 CORS

同源策略 同源策略&#xff08;Same origin policy&#xff09;是一種約定&#xff0c;它是瀏覽器最核心也最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;則瀏覽器的正常功能可能都會受到影響。可以說Web是構建在同源策略基礎之上的&#xff0c;瀏覽器只是針對同…

vue新手入門——vue-cli搭建

首先說明&#xff0c;以下內容vue官網都有文檔&#xff0c;如果覺得麻煩啰嗦&#xff0c;請移步至 安裝-vue.js 。 準備工作&#xff1a; 1.下載并安裝node環境&#xff0c;一般情況下安裝好node之后&#xff0c;npm也會安裝好。具體安裝的話&#xff0c;百度大概能幫得上忙。 …

如何看懂源代碼–(分析源代碼方法)

我們在寫程式時&#xff0c;有不少時間都是在看別人的代碼。例如看小組的代碼&#xff0c;看小組整合的守則&#xff0c;若一開始沒規劃怎么看&#xff0c; 就會“嚕看嚕苦&#xff08;臺語&#xff09; ” 不管是參考也好&#xff0c;從開源抓下來研究也好&#xff0c;為了了解…