Shell基礎(chǔ)ideago精華版

hello world

#! /bin/bash 聲明為bash執(zhí)行

#!/bin/bash 
# This is a very simple example
echo Hello World

變量

bash的變量無(wú)需聲明薪捍,可以直接使用甩卓,切記 等號(hào)左右一定不能有空格

引用變量的時(shí)候需要在變量名前面加上$符號(hào)判导,否則bash會(huì)視為字符串執(zhí)行

somevar='test'
echo $somevar

字符串

$(($var*3)) $var是字符串信粮,雙括號(hào)語(yǔ)法支持字符串轉(zhuǎn)數(shù)字坎拐,然后運(yùn)算

sips -Z $((${size_array[i]}*2)) $file_2x
sips -Z $((${size_array[i]}*3)) $file_3x

數(shù)組

當(dāng)有變量為如下格式的時(shí)候箩朴,Bash會(huì)自動(dòng)創(chuàng)建數(shù)組

arrary[index]=value
fruits[0]='apple'
fruits[1]='banana'
fruits[2]='orange'
echo ${fruits[1]}

訪問(wèn)數(shù)組元素使用花括號(hào),${array[index]}

聲明一個(gè)數(shù)組驾孔,并初始化

array=(element1 element2 element3)

輸出整個(gè)數(shù)組

echo ${array[@]}

獲取數(shù)組長(zhǎng)度

${#array[@]}

獲取數(shù)組第n個(gè)元素的長(zhǎng)度

${#array[n]}

#! /bin/bash
Unix[0]='Debian'
Unix[1]='Red hat'
Unix[2]='Ubuntu'
Unix[3]='Suse'
echo ${#Unix[3]} # length of the element located at index 3 i.e Suse

添加數(shù)組元素

Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
Unix=("${Unix[@]}" "AIX" "HP-UX")
echo ${Unix[7]}

"AIX"和"HP-UX"被添加到數(shù)組的第7位和第8位

刪除數(shù)組元素

使用模式(patterns)刪除數(shù)組元素

按pattern過(guò)濾之后存儲(chǔ)剩余元素到一個(gè)新數(shù)組

#!/bin/bash
declare -a Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora');
declare -a patter=( ${Unix[@]/Red*/} )
echo ${patter[@]}

$ ./arraymanip.sh
Debian Ubuntu Suse Fedora

上面的例子刪除數(shù)組元素形式如Red*

流程控制

條件選擇

-z檢測(cè)字符串長(zhǎng)度為0, -n 檢測(cè)字符串不為0

如果then和if寫(xiě)在同一行的話芍秆,then前面要加;

if [ -z $a ];then 
  echo '$a is empty'
fi

if - then - else - fi 語(yǔ)法

if [ ${size_array[i]} != "1024" ]
then
    file_2x=$out_dir/icon-${size_array[i]}@2x.png
    file_3x=$out_dir/icon-${size_array[i]}@3x.png
    cp $source_file $file_2x
    cp $source_file $file_3x
    sips -Z $((${size_array[i]}*2)) $file_2x
    sips -Z $((${size_array[i]}*3)) $file_3x
else
    file_1024=$out_dir/icon-1024.png
    cp $source_file $file_1024
    sips -Z 1024 $file_1024
fi

for循環(huán)

打印目錄下所有的文件

#!/bin/bash
for i in $( ls ); do
    echo item: $i
done

打印序列

#!/bin/bash
for n in $(seq 1 10);
do
   echo $n
done

while循環(huán)

i=2 
while [[ $i -le 19 ]]; do
    file="demo"$i".js"
    echo $file
    cp demo1.js $file
    let i=i+1
done

until語(yǔ)法

#!/bin/bash
counter=$1
until [ $counter -lt 10 ];
do
   echo the counter:$counter
   let counter=counter-1
done

函數(shù)

local聲明為局部變量

function hello { 
    local HELLO=World 
    echo  HELLO  
}

比較運(yùn)算

字符串比較運(yùn)算符

比較符 說(shuō)明 舉例
-z string 如果長(zhǎng)度為零則為真 -z $somevar
-n string 如果長(zhǎng)度不為零則為真 -n $somevar
str1 = str2 如果str1與str2相同,則為真 $str1 = $str2
str1 != str2 如果長(zhǎng)度為零則為真 $str1 != $str2

算術(shù)比較符

比較符 說(shuō)明 舉例
-eq 等于 $1 -eq 10
-ne 不等于 $1 -ne 10
-lt 小于 $1 -lt 10
-gt 大于 $1 -gt 10
-le 小于或等于 $1 -le 10
-ge 大于或等于 $1 -ge 10

continue翠勉,break,exit 0

continue妖啥,break和主流語(yǔ)言一致

bash好像不支持return ,可以用exit 0 退出腳本

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末对碌,一起剝皮案震驚了整個(gè)濱河市荆虱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖怀读,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诉位,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡菜枷,警方通過(guò)查閱死者的電腦和手機(jī)苍糠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)啤誊,“玉大人岳瞭,你說(shuō)我怎么就攤上這事∥们拢” “怎么了瞳筏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)牡昆。 經(jīng)常有香客問(wèn)我姚炕,道長(zhǎng),這世上最難降的妖魔是什么丢烘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任钻心,我火速辦了婚禮,結(jié)果婚禮上铅协,老公的妹妹穿的比我還像新娘。我一直安慰自己摊沉,他們只是感情好狐史,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著说墨,像睡著了一般骏全。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尼斧,一...
    開(kāi)封第一講書(shū)人閱讀 52,736評(píng)論 1 312
  • 那天姜贡,我揣著相機(jī)與錄音,去河邊找鬼棺棵。 笑死楼咳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的烛恤。 我是一名探鬼主播母怜,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缚柏!你這毒婦竟也來(lái)了苹熏?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎轨域,沒(méi)想到半個(gè)月后袱耽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡干发,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年朱巨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铐然。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蔬崩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搀暑,到底是詐尸還是另有隱情沥阳,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布自点,位于F島的核電站桐罕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏桂敛。R本人自食惡果不足惜功炮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望术唬。 院中可真熱鬧薪伏,春花似錦、人聲如沸粗仓。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)借浊。三九已至塘淑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚂斤,已是汗流浹背存捺。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留曙蒸,地道東北人捌治。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像纽窟,于是被迫代替她去往敵國(guó)和親具滴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361