可以將命令的執行結果賦值給一個變數,然後通過變數的長度來判斷是否有輸出,如下命令判斷是否有fake raid:
info=`ls/dev/mapper/isw_*`
if[-z"$info"];then
echo"findnofakeraid"
else
echo"yes,findresultis$info"
fi
這里info變數保存的是`ls /dev/mapper/isw_*`輸出結果,通過if來判斷輸出是否為空,-z判斷為空,-n判斷是非空
㈡ shell變數定義【學習總結】
簡單來說就是將需要執行的命令保存到文本中,按照順序執行。它是解釋型的,意味著不需要編譯。
變數名的定義規則:
變數名嚴格區分大小寫,不能有特殊字元,不能以數字開頭,等號兩邊不能有任何空格,變數名盡量做到見名知意
1、基本方式
直接賦值給一個變數,變數名=變數值
2、命令執行結果賦值給變數
3、互動式定義變數(read)
目的: 讓用戶自己給變數賦值,比較靈活
常見選項釋義:
-p 定義提示用戶的信息
-n 定義字元數(限制變數值的長度)
-s 不顯示(不顯示用戶輸入的內容)
-t 定義超時時間,默認單位為秒(限制用戶輸入變數值的超時時間)
4、定義有類型的變數(declare)
目的: 給變數做一些限制,固定變數的類型,比如:整型、只讀
用法:declare 選項 變數名=變數值
常用選項:
-i 將變數看成整數 declare -i A=123
-r 定義只讀變數 declare -r B=hello
unset 變數名
相同點:引號中的內容可以作為一個整體
不同點:雙引號可以引用變數,單引號不能引用變數
* :匹配0個或者任意多個字元
? :任意單個字元
[a-z] :括弧內的任意單個字元
! :取反
{string,string,string} :匹配括弧裡面用逗號隔開的所有的字元串
{1..100} :匹配一個序列
案例:
1.腳本名稱 ***.sh
2.腳本內容
1)定義解析器
#!/bin/bash
#!/bin/env bash 優勢:會自動去找當前系統的解析器位置
2)注釋說明
#
3)程序本身
定義變數+基本命令+基本語法+思想
1、標准腳本執行方法 :相對路徑或者絕對路徑
前提:標准執行方式腳本必須要有 可執行許可權
2、非標準的執行方法 (不建議)
場景:查看腳本執行過程;或者腳本無法賦予可執行許可權
解析器 +腳本文件
㈢ Unix 中shell命令。結果重定向(>)和結果附加重定向(>>)有什麼區別
shell 使用三種標准 I/O 流:
stdout 是標准輸出流,顯示來自命令的輸出。它的文件描述符是 1。
stderr 是標准錯誤流,顯示來自命令的錯誤輸出。它的文件描述符是 2。
stdin 是標准輸入流,向命令提供輸入。它的文件描述符是 0。
輸入流向程序提供輸入,常常是來自終端鍵盤。輸出流列印文本字元,常常是在終端上。終端原來是 ASCII 打字機或顯示終端,但是現在常常是圖形桌面上的窗口。
對輸出進行重定向
對輸出進行重定向有兩種方法:
n>
將來自文件描述符 n 的輸出重定向到文件。必須對這個文件有寫許可權。如果文件不存在,就創建它。如果它存在,現有內容常常會丟失而沒有警告。
n>>
也將來自文件描述符 n 的輸出重定向到文件。同樣,必須對這個文件有寫許可權。如果文件不存在,就創建它。如果它存在,輸出就附加到現有文件後面。
n> 或 n>> 中的 n 是指文件描述符。如果忽略,就假設是標准輸出。清單 66 演示使用重定向將來自 ls 的標准輸出和標准錯誤分別放進兩個文件,這些文件是在 lpi103 目錄中創建的。還演示了如何將輸出附加到現有的文件中。
清單 66. 輸出重定向
㈣ 在linux系統中 用shell 或者python 運行 grep 命令 但要查找的內容是很多個 並想把結果放到一個變數中
如果多個內容是與關系,可以多個grep用管道相連,是或關系,可用正則式
如grep '\(ab|cd\)' a.txt 是查包含 ab或cd的行, grep 'ab' a.txt | grep 'cd' 是查包含ab和cd的行
要將結果賦到變數 a=`grep '\(ab|cd\)' a.txt ` 就行了
在python里就相當好辦了,用不著grep啦,字元串的find函數就行啦