1. 字串如何大小寫轉換
str="this is a bash shell script."
1> tr方式
newstr=`tr '[a-z]' '[a-z]' <<<"$str"`或者 newstr=$(echo $str |tr '[a-z]' '[a-z]')
2> typeset
typeset -u variable (把variable的小寫轉換成大寫)
typeset -l variable (把variable的大寫轉換成小寫)
如:[oracle@node3 ~]$ typeset -u str
[oracle@node3 ~]$ str="this is a bash shell script."
[oracle@node3 ~]$ echo $str
this is a bash shell script.
2. 判斷變數中是否包含某個字串
str="this is a string"
[[ $str =~ "this" ]] && echo "\$str contains this"
3. 將文字檔案的內容按行儲存到陣列中
#!/bin/bashi=0while
read line
doa[$i]="
$line
"i=$[$i+1
]done
for (( i=0; i<3; i++))
doecho"$
"done
注意:在這裡就不要用 cat dept.txt |while read line了,因為管道的命令都是在子shell中執行的,這意味著在子shell中賦值的變數對父shell是無效的。在本例中,該指令碼無法讀取賦給陣列的值。
4. 昨天的日期
date -d "1 day ago" "+%y-%m-%d"
date -d last-day +%y-%m-%d
5. 指定日期的後一天
date -d "20150303 1 days" +%y%m%d
6. awk將最後一行的每一列分行列印
awk 'end}'
7. awk去掉空格
1> sub(/^[[:blank:]]*/,"",變數) 是去掉變數左邊的空白符
sub(/[[:blank:]]*$/,"",變數) 是去掉變數右邊的空白符
gsub(/[[:blank:]]*/,"",變數) 是去掉變數中所有的空白符
譬如:echo " hello world " | awk ''
|helloworld|
2> echo " hello world " | awk ''
|hello world|
8. shell中如何實現數值向上取整
a=1.1
echo $a|awk ''
9. 如何顯示shell指令碼的執行過程
1> sh -x 1.sh
2>
#!/bin/bash -xword1=hello
word2=world
echo $word1 $word2
執行結果如下:
[oracle@node1 ~]$ ./1.sh-->>注意執行的方式,如果是sh 1.sh則沒有這種效果
+ word1=hello
+ word2=world
+ echo
hello world
hello world
3> 只希望一部分顯示執行過程,可使用set -x 和set +x
[oracle@node1 ~]$ cat1.sh
#!/bin/bash
set -x
word1=hello
word2=world
set +x
echo
$word1 $word2
[oracle@node1 ~]$ ./1.sh
+ word1=hello
+ word2=world
+ set +x
hello world
10. > /dev/null 2>&1
將標準輸出和標準錯誤重定向到/dev/null中
11. 陣列
$ fruits[0]=""$ fruits[
1]="
grape
"$ fruits[
2]="
orange"$
echo
"$ $ $
"$ fruits=("""
grape""
orange
") -->> 如何對陣列進行賦值
$ echo
"$ $ $"$
echo"$
" -->> 如何獲取陣列的個數3$
echo"$
" -->> 如何獲取陣列的值
12. 如何用grep去掉空格和注釋
grep -ev "^$|^#" db_install.rsp
13. 如何找出tkprof命令生成的outputfile中的select語句
awk 'beginif($0~/^$/) j=nr;if(i==j) print $0 }' 1.txt
因為select語句沒有寫在一行,且select語句結束以後會有空行,所以解決的思路是列印select及select以下的行,直到空行。所以當碰到select語句的時候,將行值賦給i和j,當碰到空行時,將行數賦給j,這樣j就發生了改變。判斷是否列印所在行的值就看i和j是否相等。
這樣列印出來的內容會有點難看,select和select語句之間沒有空行,所以在碰到select的時候就列印乙個空行。
注意:判斷空行的寫法/^$/,begin代表將i和j初始化為0,如果沒有begin語句,則處理每一行的時候i和j的值都會重置為0。
14. 在第三行行尾新增;號
sed -ie '3s/$/;/'
生活碎碎念
工作後,總是會有各種各樣的場合介紹自己,姓名呀 愛好啦 哪的人呢 每每說到愛好,總是覺得不知道應該怎樣表達。我喜歡旅行,喜歡美食,喜歡做飯 中餐西餐各種料理,對牛排和義大利面情有獨鍾 我也喜歡運動啊,籃球足球羽毛球 當然啦,籃球足球只是圍觀,是科比和梅西的無腦粉絲 喜歡滑冰和滑雪 技術雖不高,但也算...
技術碎碎念
註冊過後還沒怎麼來過,這次面試在最後一輪失敗了,不可推卸的是自己沒把相關思考與想法記錄下來,好記性不如亂鼻頭。回來後發了會兒呆。想到今天召開大家開會的時候,有人提出策劃發現bug了不要馬上就跑過來了,打斷思緒,上個bug還沒解決就又帶入了混亂。剛開始想是不是要用個管理工具,比如禪道,來管理這些問題,...
今日碎碎念
先匯報一下今天的工作。早上看了 物流案例 的 物流系統評價 與 物流系統 兩章,收穫頗豐,待會會將所得所感一一記錄下來。中午12點準時出發,奔赴華工五山區參加廣東移動在14點舉行的筆試,感想多多,待會也一併記下來。下午5點半左右回到宿舍,開啟電腦,滿心希望flexsim系統可以正常執行,結果搗鼓了近...