自己在工作中用到的shell知識總結:
1. 變數
宣告:declare -ar arrayname
declare -r string="i think this gay must be crazy !"
-a 陣列
-r 唯讀
$n $1 表示第乙個引數,$2 表示第二個引數 ...
$# 命令列引數的個數
$0 當前程式的名稱
$? 前乙個命令或函式的返回碼
$* 以"引數1 引數2 ... " 形式儲存所有引數
$@ 以"引數1" "引數2" ... 形式儲存所有引數
$$ 本程式的(程序id號)pid
$! 上乙個命令的pid
2. 陣列
declare -a arrayname
array=(value1 value2 ... valuen) //陣列賦值,各成員之間用 「空格」 分隔
如果沒有定義索引號,預設是從0開始
i=5arrayname[0]="*****" //陣列 賦值
arrayname["$i"]="son" //陣列 賦值
$arrayname[0] //第乙個元素的值
count="$" //獲取資料成員的個數 //陣列的長度
count="$" //獲取資料成員的個數 //陣列的長度
$ //第四個元素的長度
$ //陣列的全部元素
unset arrayname //刪除陣列變數,實際上是將arrayname的值賦空值
使用迴圈讀出陣列中的內容:
print_arr()" //陣列的長度
i=0while [ i -lt $count ]
dotmp="$array["$i"]"
echo "$tmp"
let i++ //i 加1,確保退出迴圈的條件
}3. 逐行讀取檔案中並去除每行中需求的部分,並且放在陣列中
方法一:
readfile()'`
#消除兩邊的空格
tmp=`echo "$tmp" | sed -e 's/^ *//' -e 's/ *$//'`
if [ "$tmp" != "" ]
then
arr["$count"]="$tmp"
let count++
fidone < "$file"
#讀取$file 中的內容
}方法二:
cat "file" | while read line
doecho $line
done
4. case 巢狀(相當重要的分號,巢狀時不要忘了)
例子:case "$char" in
a)case "$num" in
1|2|3|4|5) ##另一種寫法,很好 :wink:
echo "$num"
;;0)
echo "error"
;;esac ##不要忘記了
;; ## 相當重要的分號,巢狀時不要忘了 :cry:
b)case "$string" in
ni|wo|ta)
echo "do something"
;;other)
echo "do something"
;;esac ##不要忘記了
;; ##不要忘記了
*)echo 「do something 」
;;[color=blue][/color]
esac
5.格式化輸出,很笨的方法
format_print ()
數字代表 所占用的寬度,s表示字元(還有其他的自己找資料),,預設是右對齊,「-」表示右對齊,不足用空格表示,printf命令是不換行的,手工新增換行
6.函式
##定義
f()##呼叫
f 「leo」 23 ##引數之間用空格隔開
7.其他
呼叫外部命令獲取其返回值
value=`pwd`
value=$(pwd)
string=$(cat file)
檔案開頭第一行
#!/bin/sh
shell語法小結
原帖 http blog.chinaunix.net u1 34739 showart 283263.html 1 set命令 當沒有引數的時候,列出系統中所有的自定義變數值 當有引數的時候,重置基本引數如 1 2等。如 set date 將date 命令的輸出當作輸入引數 2 let命令 執行算術...
shell陣列小結
不知道 是什麼時候寫的東西,整理文件時被考古發現,給那些閒著蛋疼之人,一笑而過吧。如果本文中的錯誤給您帶來所有的精神損失,請找保險公司理陪!當然你可以告訴我 傾訴 陣列作為一種特殊的資料結構在任何一種程式語言中都有它的一席之地,當然bash shell也不例外。本文就shell陣列來做乙個小的總結。...
shell學習小結
小結 本章我麼介紹了如何使用ls 與stat 露出檔案與檔案 meta資料,還有如何使用 touch 設定未見時間戳 touch 可顯示有關日期時間相關的資訊以及在許多現行系統上的範圍限制.說明了如何以shell 的程序id 變數 搭配mktemp 工具並手動取出隨機資料流樣本 建立位移的臨時性檔名...