1、先介绍下shell的工作原理
Shell可以被称作是脚本语言,因为它本身是不需要编译的,而是通过解释器解释之后再编译执行,和传统语言相比多了解释的过程所以效率会略差于传统的直接编译的语言。
但是shell脚本简单明了的语法,给很多码农尤其是运维还是带来不少好处,尤其是和Python的结合,在大数据方面可谓是一骑绝尘。

2、
lesson-1:the first shell
vi a.sh

#!/usr/bin/bash
echo 'Hello world'

chmod +x a.sh
sh a.sh

output:
Hello world

lesson-2:Shell中的变量
vi b.sh

#!/usr/bin/bash
myvariable='hello world' #注意没有空格
mynum=100
echo $myvariable
echo ${myvariable}
echo $mynum

output:
hello world
hello world
100
lesson-3:Shell中的运算
vi c.sh

#!/usr/bin/bash
a=3
b=5
val=`expr $a + $b`
echo "Total value:$val"

val=`expr $a - $b`
echo "Total value:$val"

val=`expr $a \* $b`
echo "Total value:$val"

val=`expr $a / $b`
echo "Total value:$val"

val=`expr $a % $b`
echo "Total value:$val"

output:
Total value:8
Total value:-2
Total value:15
Total value:0
Total value:3

lesson-4:Shell中比较运算符
vi d.sh

#!/usr/bin/bash
a=2
b=2
c=3

if [ $a == $b ]
then
echo "a is equal to b"
fi

if [ $a != $c ]
then
echo "a is not equal to b"
fi

output:
a is equal to b
a is not equal to b

lessson-5:Shell中关系运算符
#!/usr/bin/bash

a=10
b=10
c=30

if [ $a -eq $b ]
then
echo "a is eq b"
else
echo "false"
fi

if [ $a -ne $b ]
then
echo "true"
else
echo "false"
fi

if [ $a -gt $b ]
then
echo "a is gt b"
else
echo "a is not gt b"
fi

if [ $a -ge $b ]
then
echo "true"
else
echo "false"
fi

output:
a is eq b
false
a is not gt b
true

lesson-6:Shell中字符串
#!/usr/bin/bash

h="hello"
w="world"
str=$h" "$w
echo $str

echo ${str:0:5}
echo ${str:1}

output:
ello world
hello
ello world

lesson-7:Shell中的数组

#!/usr/bin/bash
array=(11 12 13 14 15)
array2=(aa bb cc dd ee)
value=${array[3]}
echo $value

#获取数组长度
length=${#array[*]}
echo $length

#数组循环
for cname in ${array2[@]}
do
echo $cname
done

output:
14
5
aa
bb
cc
dd
ee

lesson-8:Shell中的test命令
-e file #文件存在则返回true
-f file #文件存在可读则返回true
-w file #文件存在可写则返回true
-x file #文件存在可执行则返回true
-s file #文件存在并不为空则返回true
-S file #文件存在并为空则返回true
-d file #文件目录存在则返回true

#!/usr/bin/bash

filename=aa.txt
echo $filename

if test -e $filename
then
echo "file is exist"
else
echo "file is not exist"
fi

if test -r $filename
then
echo "the file is readable"
else
echo "the file is not readable"
fi

if test -s $filename
then
echo "the file is not empty"
else
echo "the file is empty"
fi

lesson-9:Shell中的for循环
#!/usr/bin/bash
for i in {1..5}
do
echo $i
done

for i in {12 15 17}
do
echo $i
done

for file in ./*
do
echo $file
done

output:
1
2
3
4
5
12
15
17
./a.sh
./aa.txt
./b.sh
./c.sh
./d.sh
./e.sh
./f.sh
./g.sh
./h.sh
./ii.sh

lesson-10:Shell中的while循环
#!/usr/bin/bash
count=0
while [ $count -lt 5 ]
do
count=`expr $count + 1`
echo $count
done

output:
1
2
3
4
5

lesson-11:Shell中的函数
#!/usr/bin/bash

#$0为自己 pp.sh
#$1为第一个参数
##$为参数个数

num1=$1
num2=$2
function AddFun
{
#read -p "Enter a number:" num1
#read -p "Enter another number:" num2
echo $[ $num1 + $num2 ]
}
result=`AddFun`
echo "The Result is :$result"

sh pp.sh 2 3
output:
The Result is :5

lesson-12:其他
覆盖重定向 sh aa.sh > aa.txt
追加重定向 sh bb.sh >> bb.txt

$0 :即命令本身
$1 :第一个参数.
$2, $3, $4 ... :第2、3、4个参数,依次类推。
$# 参数的个数,不包括命令本身
$@ :参数本身的列表,也不包括命令本身
$* :和$@相同,但"$*" 和 "$@"(加引号)并不同,"$*"将所有的参数解释成一个字符串,而"$@"是一个参数数组。

OVER!
本文为本人原创,转载时请注明出处,Thanks!

shell十分钟教程的更多相关文章

  1. 【项目管理和构建】十分钟教程,eclipse配置maven + 创建maven项目(三)

    [项目管理和构建]十分钟教程,eclipse配置maven + 创建maven项目(三) 上篇博文中我们介绍了maven下载.安装和配置(二),这篇博文我们配置一下eclipse,将它和maven结合 ...

  2. [转载]GDB十分钟教程

    转自:http://blog.csdn.net/liigo/article/details/582231/ GDB十分钟教程 作者: liigo原文链接: http://blog.csdn.net/l ...

  3. GDB十分钟教程 (链接)

    未联系作者,只能放个链接了. 十分赞的gdb教程. GDB十分钟教程

  4. GDB十分钟教程

    原文链接: http://blog.csdn.net/liigo/archive/2006/01/17/582231.aspx 本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程 ...

  5. GDB十分钟教程【转载于网络爱好者】

    本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者. GDB是一个由GNU开源组织发布的.UNIX/LINUX操作系统下的.基于命令行的.功能强大的程序调 ...

  6. GDB十几分钟教程

    GDB十分钟教程 作者: liigo原文链接: http://blog.csdn.net/liigo/archive/2006/01/17/582231.aspx日期: 2006年1月16日 本文写给 ...

  7. 十分钟轻松让你认识ASP.NET 5(MVC6)

    ASP.NET 5差不多快发布了.自己也学习了有两个月了.今天给没有接触asp.net 5的同学写一个简单地十分钟教程,教你认识一下asp.net 5. 1.安装kvm 首先,你需要以管理员权限打开c ...

  8. (十分钟视频教程)nodejs基础实战教程3:react服务端渲染入门篇

    视频截图如下: (具体视频见文末) 前言: 这是小猫的第三篇node教程,本篇内容是由公众号粉丝票选得出的,相信大家对这篇教程是抱有较大希望的,这篇教程由小猫和一位多年的好朋友合作完成(笔名:谷雨,博 ...

  9. 快速入门:十分钟学会Python

    初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...

随机推荐

  1. JS Event事件流(冒泡机制、捕获机制、事件绑定)

    1.事件流 事件流:从页面中接收事件的顺序.也就是说当一个事件产生时,这个事件的传播过程,就是事件流. IE的事件流 IE中的事件流叫事件冒泡:事件冒泡:事件开始时由最具体的元素接收,然后逐级向上传播 ...

  2. Spring 5.0.0.RC1 - CORS Support 【译文】

    3 CORS支持 3.1 介绍 出于安全考虑,浏览器禁止对当前源之外的资源进行AJAX调用.例如,当你在一个标签页检查你的银行账户时,你可以在另一个标签页打开evil.com的网站.在evil.com ...

  3. Oracle listener服务启动后又停止的解决方案

    这是Oracle监听服务.忘了说我的版本是Oracle10g. 我装完Oracle数据库之后,然后用第三方工具plsql去连接,提示no listener,首先我反复检查tnsnames.ora配置文 ...

  4. Java阶段性测试--第二三大题参考代码

    第二大题: 1.打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于它本身 package Test1; //1.打印出所有的 ...

  5. Yii2中限制访问某控制器的IP(IP白名单)

    有关Yii2.0鉴权之访问控制过滤器参考这篇文章  http://www.yiiframework.com/doc-2.0/guide-security-authorization.html 这里主要 ...

  6. 测序分析软件-phred的安装

    1.进入phred官网,给作者写信,获得所需的软件,大约需要两三天的时间即可收到回信. 2.根据作者的指示下载,解压相应软件. 3.以笔者本人的安装为例unbuntu系统(phred自带的instal ...

  7. 每天一个JS 小demo之个人信息添加。主要知识点:DOM操作中的表格操作,节点操作

    以下是简易效果: <!DOCTYPE html><html lang="en"><head> <meta charset="UT ...

  8. 网页 cookie

    定义: 从JavaScript的角度看,cookie 就是一些字符串信息.这些信息存放在客户端的计算机中,用于客户端计算机与服务器之间传递信息. 使用:document.cookie = 'usern ...

  9. [BZOJ1597]土地购买

    Description 农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000, ...

  10. php 面向对象的三大特性

    <?phpheader("Content-type:text/html;charset=utf-8");/*封装目的:为了使类更加安全做法:1.将成员变量变成私有2.做一个成 ...