1. 程式人生 > >shell學習(二)

shell學習(二)

1.設定變數的作用範圍

export  變數名

export 變數名=變數值

2.整數變數的運算

expr 變數1 運算子 變數2 【運算子 變數3】

+ 加法運算;- 減法運算;\* 乘法運算;/ 除法運算;% 取餘運算子

3.test命令

測試特定的表示式是否成立,當條件成立時,測試語句的返回值為0,否則返回其他數值

格式 test 條件表示式

      [ 表示式 ](中括號與表示式之間至少有一個空格,一般用於if等條件測試語句)

[[email protected] ~]# [  -d /media/cdrom  ] (判斷是否為資料夾,0為是,1為否)
[[email protected]

~]# echo $?
0
[[email protected] ~]# [  -d /media/cdrom/Server  ]
[[email protected] ~]# echo $?
1
[[email protected] ~]# [ -d /media/cdrom ] && echo "YES"(當條件成立時輸出YES)
YES 

參考地址:http://blog.csdn.net/cjsafty/article/details/6669755

(1)test檔案測試:
-b file     若檔案存在且是一個塊特殊檔案,則為真
-c file     若檔案存在且是一個字元特殊檔案,則為真
-d file     若檔案存在且是一個目錄,則為真
-e file     若檔案存在,則為真
-f file     若檔案存在且為一個規則檔案,則為真
-g file     若檔案存在且設定了SGID位的值,則為真
-h file     若檔案存在且為一個符號連結,則為真
-k file     若檔案存在且設定了“sticky”位的值,則為真
-p file     若檔案存在且為一已命名管道,則為真
-s file     若檔案存在且其大小大於零,則為真
-u file     若檔案存在且設定了SUID位的值,則為真
-r file     若檔案存在且可讀,則為真
-w file     若檔案存在且可寫,則為真
-x file     若檔案存在且可執行,則為真
-o file     若檔案存在且被有效使用者ID所擁有,則為真
 
(2)test字串比較
-z string         若string長度為0,則為真
-n string         若string長度不為0,則為真
string1 = string2    若兩個字串相等,則為真
string1 != string2   若兩個字串不相等,則為真
 
(3)test命令的數字比較操作符
int1 -eq int2      若int1等於int2,則為真
int1 –ne int2      若int1不等於int2,則為真
int1 –lt int2      若int1小於int2,則為真
int1 –le int2      若int1小於等於int2,則為真
int1 –gt int2      若int1大於int2,則為真
int1 –ge int2      若int1大於等於int2,則為真
 
(4)test複合表示式
! expr                     若expr為假則複合表示式為真。expr可以是任何有效的測試表達式
expr1 -a expr2           若expr1和expr2都為真,則為真
expr1 -o expr2           若expr1和expr2有一個為真,則為真

4.特殊shell變數

$0當前指令碼檔名

$n傳遞給指令碼或函式的引數。n是一個數字,表示第幾個引數

$#傳遞給指令碼或函式的引數個數

$*傳遞給指令碼或函式的所有引數

[email protected]傳遞給指令碼或函式的所有引數

$?上個命令退出狀態或函式返回值,成功為0失敗為1

$$當前shell指令碼的程序ID,即指令碼所在的程序ID

注:$*與&@都表示傳遞給函式或指令碼的所有引數,不被引號包含時,都以“$1”,“$2”,“$3”的形式輸出所有引數,當被""包含時,$*以“$1,$2,$3”的形式輸出所有引數,而[email protected]會將引數分開,以“$1”,“$2”,“$3”的形式輸出。

5.整數值比較

[ 整數1 操作符 整數2]

[[email protected] ~]# who | wc -l
7
[[email protected] ~]# [ $(who | wc -l) -gt 5 ] && echo "Too many." 
Too many.
[[email protected] ~]# [ $(who | wc -l) -ge 10 ] && echo "> = 10."

[[email protected] ~]

注:who 可以得知目前有哪些使用者登陸系統,單獨執行who會列出登入賬戶,使用的終端機,登入時間以及從何處登入等。

-eq:等於 -nq:不等於 -gt:大於 -lt:小於 -le:大於或等於 -ge:大於或等於

6.字串比較

[ 字串1 -字串2 ]

[ 字串1 !=字串2]

[-z 字串]

[[email protected] ~]# echo $LANG 
zh_CN.UTF-8
[[email protected] ~]# [ $LANG !=  "en.US" ] && echo  "Not en.US"
Not en.US

7.邏輯測試

[ 表示式1 ] 操作符[ 表示式2 ]

命令1 操作符 命令2

[[email protected] ~]# echo $USER
root
[[email protected] ~]# [ $USER != "teacher" ]  &&  echo "Not teacher"
Not teacher

相關推薦

shell學習

1.設定變數的作用範圍 export  變數名 export 變數名=變數值 2.整數變數的運算 expr 變數1 運算子 變數2 【運算子 變數3】 + 加法運算;- 減法運算;\* 乘法運算;/

Linux學習Shell基礎變量、環境變量配置文件

start 環境變量 pre alt fun name mage art col 一、變量 變量是一個容器,裏面能放不同的值。 要點知識: PATH,HOME,PWD,LOGNAME這些都是變量。 例子: [root@ruanwenwu02 ~]# echo a+b a

linux學習筆記之shell程式設計條件判斷

條件判斷 檔案存在與否 -d 是否存在為目錄 -e 是否是檔案 -f 是否存在為檔案 [-d /root && echo "yes" || echo "no"] -檔案讀寫執行許可權#### -r 讀許可權 -w 寫

Write a Shell in C 學習

上一次簡單的談了怎樣從命令列讀取輸入並對輸入進行初步的處理。下一步就是所謂執行命令了。而命令大概又分成兩個部分,一是內建命令,二是執行外部程式。這篇主要講如喝執行內建命令。 我實現的內建命令有,cd,info,pwd,exit,search。值得一提的是,我把執行外部程式的

shell 指令碼程式設計學習 變數,使用者輸入,引數

前面已經說過,shell 指令碼幾乎就是一組儲存下來的 shell 命令。掌握了格式和執行方法之後我們已經可以使用指令碼來幫助完成工作了。但相較於平時一行行地敲命令,指令碼還是有一些特別之處讓我們可以實現更強大的功能。 變數 在單行敲 shell 命令時我們

爬蟲庫之BeautifulSoup學習

不必要 baidu html left 官方 blank 正則 文本處理 比較 BeautifulSoup官方介紹文檔:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html 四大對象種

cocos2dx 3.1從零學習——菜單、場景切換、場景傳值

天空 ptr select 特效 new 要點 綁定 使用 water 回想一下上一篇的內容,我們已經學會了創建一個新的場景scene,加入sprite和label到層中。掌握了定時事件schedule。我們能夠順利的寫出打飛機的主場景框架。 上一篇的內容我練習了七個新

redis學習——String數據類型

字符串類型 創建 復雜度 back nbsp 命令 時間復雜度 value con 一、概述 字符串類型是Redis中最為基礎的數據存儲類型,它在Redis中是二進制安全的,這便意味著該類型可以接受任何格式的數據,如JPEG圖像數據或Json對象描述信息等。在R

Linux 網卡驅動學習網絡驅動接口小結

-a key 頻率 網絡 上網 ren 網絡設備 ews 入口 【摘要】前文我們分析了一個虛擬硬件的網絡驅動樣例。從中我們看到了網絡設備的一些接口。事實上網絡設備驅動和塊設備驅動的功能比較相似,都是發送和接收數據包(數據請求)。當然它們實際是有非常多不同

ext2文件系統學習—— 目錄磁盤結構

echo free 文件格式 htm file 目錄結構 bitmap 點號 name 創建鏡像、mount等操作和上一篇一樣,測試目錄結構如下: 一些文件系統信息如下: Block size: 1024 Inodes per group: 1

RabbitMQ學習工作隊列

lose borde 阻塞 lpad mes getc actor 使用 處理 1.工作隊列(Work Queue)又叫任務隊列(Task Queue)指將任務分發個多個消費者。 2.實際操作: 這裏使用一個生產者產生多條數據提供給3個消費者

JAVA學習 String使用equals方法和==分別比較的是什麽?

找到 基礎上 stirng print 大小 obj lis 分配 ret String使用的equals方法和==的區別 equals方法和==的區別 首先大家知道,String既可以作為一個對象來使用,又可以作為一個基本類型來使用。這裏指的作為一個基本類型來使用只是

CSS學習

種類 round align 圖片 單獨 tom -s 中控 vertical 列表 在HTML中,有兩種類型的列表: 無序列表 - 列表項標記用特殊圖形(如小黑點、小方框等) 有序列表 - 列表項的標記有數字或字母 使用CSS,可以列出進一步的樣式,

Struts2學習運行Action中方法的三種方式

tracking 利用 content con return -m i++ var itl 1.運行execute()方法 一般的能夠直接在action中書寫execute,調用action時會自己主動運行此方法 2.配置method方法 在s

python 命令行參數學習

Coding odi increase logs 說明 code des urn 數學 照著例子看看打打,碼了就會。寫了個命令行參數調用進行運算的腳本。 參考文章鏈接:http://www.jianshu.com/p/a50aead61319 #-*-coding:utf

【轉】JMeter學習錄制腳本

使用 get 運行 喜歡 錄制完成 帶來 免費 sdn title ---------------------------------------------------------------------------------------------------- 環境

Jmeter之Bean shell使用

.get 方法 tro 邏輯 麻煩 str www title jar  上一篇Jmeter之Bean shell使用(一)簡單介紹了下Jmeter中的Bean shell,本文是對上文的一個補充,主要總結下常用的幾種場景和方法,相信這些基本可以涵蓋大部分的需求。本節內容如

算法學習

要求 print 位數 div 輸入數據 class bsp arrays 變量 1.Sum of digits 說明:1.第一行包含要處理的值的數量;   2.然後N行將會描述這些數字的值應該是由3個整數A、B、C來計算的;   3.對於每一種情況,你需要將A乘以B,然後

SpringMVC源代碼學習FrameworkServlet內處理請求的流程

重新 tex events ... resp star 方便 沒有 isp 以下內容基於書:《看透SpringMVC-源代碼分析與實踐》基本照搬。。。用於自己查閱備忘。 先看一眼DispatcherServlet繼承樹 我們知道servlet處理方法都是通過HttpSer

Linux學習之內核、系統調用、庫

all mic linu windows系統 文件 .dll 執行 lin win   這篇博客主要介紹Linux中幾個常見的概念      Kernal:內核:我們知道計算機的硬件包括:cpu、內存、外存等等 系統想要統一資源分配就需要用到內核!內核是將計算機的硬件資源抽