SHELL

#SHELL分享

##shell簡介

shell是一種可以直接操作Linux 接口的腳本語言

#!/bin/bash

echo hello world!

##shell語法

####變量: $, unset

#!/bin/bash

your_name="ZHAOJIAN"

echo $your_name

unset your_name

echo $your_name

###變量類型:

1. 局部變量

2. 環(huán)境變量: *export* 設(shè)置環(huán)境變量

3. shell變量

###字符串:"", ''

####拼接字符串

your_name="qinjx"

greeting="hello, "$your_name" !"

greeting_1="hello, ${your_name} !"

echo $greeting $greeting_1

####獲取字符串長度

string="abcd"

echo ${#string} #輸出 4

####提取子字符串

string="runoob is a great site"

echo ${string:1:4}

###參數(shù):

* $0--文件名

* $n--第幾個參數(shù)

* $#--參數(shù)個數(shù)

* $?--上一個退出碼

###test:條件

###if

#!/bin/bash

a=30

b=200

if [ $a? -eq? $b ]

then

? echo "a 等于 b"

elif [ $a -gt? $b ]

then

? echo "a 大于 b"

elif [ $a -lt $b ]

then

? echo "a 小于 b"

else

? echo "沒有符合的條件"

fi

整數(shù)比較:

? ? -eq? ? ? 等于,如:if [ "$a" -eq "$b" ]

? ? -ne? ? ? 不等于,如:if [ "$a" -ne "$b" ]

? ? -gt? ? ? 大于,如:if [ "$a" -gt "$b" ]

? ? -ge? ? ? 大于等于,如:if [ "$a" -ge "$b" ]

? ? -lt? ? ? 小于,如:if [ "$a" -lt "$b" ]

? ? -le? ? ? 小于等于,如:if [ "$a" -le "$b" ]

? ? <? ? ? 小于(需要雙括號),如:(("$a" < "$b"))

? ? <=? ? ? 小于等于(需要雙括號),如:(("$a" <= "$b"))

? ? >? ? ? 大于(需要雙括號),如:(("$a" > "$b"))

? ? >=? ? ? 大于等于(需要雙括號),如:(("$a" >= "$b"))

字符串比較:

? ? =? ? ? 等于,如:if [ "$a" = "$b" ]

? ? ==? ? 等于,如:if [ "$a" == "$b" ], 與=等價

? ? ? ? ? ? ? 注意:==的功能在[[]]和[]中的行為是不同的,如下:

? ? ? ? ? ? ? 1 [[ $a == z* ]]? ? # 如果$a以"z"開頭(模式匹配)那么將為true

? ? ? ? ? ? ? 2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么結(jié)果為true

? ? ? ? ? ? ? 3

? ? ? ? ? ? ? 4 [ $a == z* ]? ? ? # File globbing 和word splitting將會發(fā)生

? ? ? ? ? ? ? 5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么結(jié)果為true

? ? !=? ? ? 不等于,如:if [ "$a" != "$b" ], 這個操作符將在[[]]結(jié)構(gòu)中使用模式匹配.

? ? <? ? ? 小于,在ASCII字母順序下.如:

? ? ? ? ? ? ? if [[ "$a" < "$b" ]]

? ? ? ? ? ? ? if [ "$a" \< "$b" ]? ? 在[]結(jié)構(gòu)中"<"需要被轉(zhuǎn)義.

? ? >? ? ? 大于,在ASCII字母順序下.如:

? ? ? ? ? if [[ "$a" > "$b" ]]

? ? ? ? ? if [ "$a" \> "$b" ]? 在[]結(jié)構(gòu)中">"需要被轉(zhuǎn)義.

? ? -z? ? ? 字符串為"null".就是長度為0.

? ? -n? ? ? 字符串不為"null"

###for 循環(huán)

for var in item1 item2 ... itemN

do

? ? command1

? ? command2

? ? ...

? ? commandN

done

###while 循環(huán)

while condition

do

? ? command

done

##常用命令

* cat 打印文件內(nèi)容 -n 顯示行號

*? grep

*? | 管道

*? -v 反選

*? egrep "正則"

*? wc -l 統(tǒng)計行數(shù)

*? find *查找文件*

*? 測試,計算一下我們一共有多少個Activity文件

*? awk *計算和數(shù)據(jù)處理*

awk -F '\/' '{print $(NF)}'

*? md5

*? diff -ac

*? sed *修改文本*

sed -i "" 's/buildAsPkg=false/buildAsPkg=true/g' ${settings_gradle}

*? pwd

*? cd ~|-|..

*? cp

*? mv

*? mkdir

*? touch

*? top

*? rm

*? chomd 777

*? echo *輸出*

*? printf 格式化輸出

*? eval *執(zhí)行命令*

*? exit n 退出碼

*? $? 上個shell的退出碼

*? du -sh 查看文件大小

*? result = \`command` 獲取程序的運(yùn)行結(jié)果

*? curl 簡單的http請求 -H -d -F

*? ps -ef 查看進(jìn)程

*? \> 輸出重定向

*? \& 程序掛起

*? sort 排序 -u 去重排序

*? head 從頭讀文件

*? tail 從某位讀(主要用來跟日志的)

*? uniq 去重

*? read value: 提示用戶輸入,并將輸入賦值給變量

*? ssh 登錄服務(wù)器

*? sudo

*? ping

*? java -jar/-version

*? adb shell 在android機(jī)器上執(zhí)行shell 命令

*? input 模擬點(diǎn)擊

*? monkey

*? pm list packages

*? ps -ef

*? logcat

*? man 查看命令如何使用,或者一般命令有-h, -help

*? history 最近使用的命令

*? tab 自動補(bǔ)齊

*? dirname/basename 路徑操作

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容