Shell基础ideago精华版

hello world

#! /bin/bash 声明为bash执行

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

变量

bash的变量无需声明,可以直接使用,切记 等号左右一定不能有空格

引用变量的时候需要在变量名前面加上$符号,否则bash会视为字符串执行

somevar='test'
echo $somevar

字符串

$(($var*3)) $var是字符串,双括号语法支持字符串转数字,然后运算

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

数组

当有变量为如下格式的时候,Bash会自动创建数组

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

访问数组元素使用花括号,${array[index]}

声明一个数组,并初始化

array=(element1 element2 element3)

输出整个数组

echo ${array[@]}

获取数组长度

${#array[@]}

获取数组第n个元素的长度

${#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

添加数组元素

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

"AIX"和"HP-UX"被添加到数组的第7位和第8位

删除数组元素

使用模式(patterns)删除数组元素

按pattern过滤之后存储剩余元素到一个新数组

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

$ ./arraymanip.sh
Debian Ubuntu Suse Fedora

上面的例子删除数组元素形式如Red*

流程控制

条件选择

-z检测字符串长度为0, -n 检测字符串不为0

如果then和if写在同一行的话,then前面要加;

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

if - then - else - fi 语法

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循环

打印目录下所有的文件

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

打印序列

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

while循环

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

until语法

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

函数

local声明为局部变量

function hello { 
    local HELLO=World 
    echo  HELLO  
}

比较运算

字符串比较运算符

比较符 说明 举例
-z string 如果长度为零则为真 -z $somevar
-n string 如果长度不为零则为真 -n $somevar
str1 = str2 如果str1与str2相同,则为真 $str1 = $str2
str1 != str2 如果长度为零则为真 $str1 != $str2

算术比较符

比较符 说明 举例
-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和主流语言一致

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352