http://blog.csdn.net/xiaominghimi/article/details/7603000

本站文章均为李华明Himi原创,转载务必在明显处注明:
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/shell/759.html

          ☞ 点击订阅 ☜
 本博客最新动态!及时将最新博文通知您!

本章节分享Shell 学习篇,那么对于Shell 简单介绍下,对于Shell来说,大家可以理解Shell 是一个命令解释器,类似于DOS下的command.com。它接收用户命令(如ls等),然后调用相应的应用程序。另外一点它可以使用用户的缺省凭证和环境执行 shell。传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。更详细的大家可以移步到: http://baike.baidu.com/view/849.htm#4

对于Shell脚本的编写,可以使用任何文本编辑器,利用常用的文本编辑器、UltraEdit、Editplus、Gedit等都可以!

对于Shell脚本的书写,约定俗成,第一行必须如下所示:(务必放在文件的第一行)

1
2
#!/bin/sh
...

符号#!用来告诉系统执行该脚本的程序,这里使用/bin/sh。编辑结束并保存;这里最好使用“!/bin/bash”而不是“!/bin/sh”,如果使用tc shell改为tcsh,其他类似。

如果要执行该脚本,必须先使用chmod命令打开脚本的执行权限,如下:

1
chmod +x yourScriptName

注释:    在进行shell编程时,以 # 开头的句子表示注释;

变量:    在其他编程语言中你必须使用变量。在shell编程中,所有的变量都由字符串组成,并且大家不需要对变量进行声明;当你要赋值给一个变量,首先熟悉如下知识;

1.需要给变量赋值时,可以这么写:   变量名=值 

1-1.  首个字符必须为字母(a-z,A-Z)

1-2 中间不能有空格,可以使用下划线(_)

1-3 不能使用标点符号

1-4 不能使用bash里的关键字(可用help命令查看保留关键字)

2. 要取用一个变量的值,只需在变量名前面加一个$ ( 注意: 给变量赋值的时候,不能在”=”两边留空格 )

3.  echo 输出(打印)

OK,书写第一个完整Shell脚本:

1
2
3
4
5
6
#!/bin/sh
#对变量赋值:
himi="HelloShell"  #等号两边均不能有空格存在
# 现在打印变量a的内容:
echo "A is:"
echo $himi

OK,终端命令&输出如下:

Last login: Sat Apr 14 14:16:13 on ttys000
mac:~ Himi$ cd /Users/Himi/Desktop/
mac:Desktop Himi$ chmod +x himi
mac:Desktop Himi$ ./himi
A is:
HelloShell
mac:Desktop Himi$

需要大家注意的是有时候变量名可能会和其它文字混淆,比如: 

#!/bin/sh
#对变量赋值:
himi=”test” #等号两边均不能有空格存在
echo $himi

echo $himi A
echo “A $himi”
#注意混淆
echo “A $himi_OK”
#正确写法:
echo “A ${himi}_OK”

终端执行&打印:

1
2
3
4
5
6
7
mac:Desktop Himi$ ./himi
test
test A
A test
A
A test_OK
mac:Desktop Himi$

童鞋们可以看到《 echo “A $himi_OK” 》这里没有正常打印出来,这是由于shell会去搜索变量himi_OK的值,而实际上这个变量此时并没有值。这时,我们可以用花括号来告诉shell要打印的是himi变量;

还需要注意shell的默认赋值是字符串赋值。比如:  

1
2
3
4
5
#!/bin/sh
#字符串赋值:
_int=19
_tot=$_int+89
echo $_tot

打印的_tot不是108 !而是 19+89 !出现此的原因就是因为Shell默认是字符串赋值,应该需要计算应该先熟悉如下几个知识:

let   表示数学运算

$[]   表示将中括号内的表达式作为数学运算先计算结果再输出。

expr   用于整数值运算,每一项用空格隔开

上面前两种方式在bash下有效,在sh下会出错。

OK,知道这些就可以重新将刚才的脚本改写成如下形式:

1
2
3
4
5
#!/bin/sh
#字符串赋值:
_int=19
_tot=$[$_int+89]
echo $_tot

3种形式输出的结果都是 108 ;

将到这里就不得不说下Shell的算术运算仂,对于Shell种的运算中,大家需要知道:

C shell只支持整数的运算;

运算符如下图所示:

简单写几个运算:

注意:

1.运算符两侧都必须有空格!!

2.C shell不支持浮点运算符(ps.如果您想要执行更加复杂的数学运算,可用UNIX的实用程序bc和nawk)

本人注:mac下亲似,不行:

#!/bin/sh
_int=3
var= expr $_int + 10
echo $var

【Shell 编程基础第一部分】第一个Shell脚本HelloShell及一些简单的Shell基础书写与概念;的更多相关文章

  1. Linux Shell编程(2)——第一个shell程序

    在最简单的情况下,脚本程序不过是存储在一个文件里的系统命令列表.这至少让你执行它 时不必重新按顺序键入相同功能的命令序列.一个清空/var/log目录下的日志文件的脚本 # Cleanup # 必须以 ...

  2. Linux - 简明Shell编程01 - 第一个脚本(HelloShell)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash echo "hell ...

  3. 【pygame游戏编程】第一篇-----创建一个窗口

    下面我们一起来创建一个背景为蓝色的窗口作为游戏编程的开始: import sys import pygame def creat_screen(): #初始化pygame pygame.init() ...

  4. 基本shell编程【2】-服务端发布脚本

    set -x deployBase="/var/lib/tomcat7/webapps" bakBase="/root/bak" echo "auto ...

  5. shell编程-ssh免交互批量分发公钥脚本

    脚本基本原理 1.控制端免交互创建秘钥和公钥: 1 ssh-keygen -t rsa -f /root/.ssh/id_rsa -N "" 2.免交互发送公钥 1 sshpass ...

  6. 今天看了shell大神的写的一个统计脚本

    通过nginx日志统计接口耗时排行 grep '/bigbox?' access_log | awk '{print $7"&process="$NF}'| sed -r ...

  7. Linux(五)shell编程基础

    一.Linux shell简介 1.shell概述 Shell 是用户与内核进行交互操作的一种接口,目前最流行的 Shell 称为 bash Shell          Shell 是一门编程语言& ...

  8. 41、shell编程基础

    bash的变量默认都是全局变量,脚本内都可以调用,无论在什么位置(函数体中也一样),即函数体外可以调用函数体内的变量: local一般用于局部变量声明,多在函数体内使用: 如果要变为局部变量,则要使用 ...

  9. shell编程基础练习

    shell作为一个人机交互的接口,在Linux中发挥着很大的作用,而shell编程则是减轻系统工程师工作的利器,这里总结一下shell编程的主要内容(趁着程序运行的空档). 本文的基本结构是shell ...

随机推荐

  1. 深入Python的类和对象

    多态:不同的子类对象,可以调用相同的父类方法,通过改写父类的方法,产生不同的执行结果 instance和type的区别: instance能够顺延到父类,比对对象与父类是否类型一致.而type只能比对 ...

  2. Jmeter中传递cookie值

    场景:用户登陆后会本地会保存cookie,cookie是用来跟服务端验证此用户已经登陆过的重要信息,但是如何获取并在其他请求时将此cookie传递给服务器呢? 在线程组下面之直接添加HTTP Cook ...

  3. ThreadPool线程池的几种姿势比较

    from multiprocessing.pool import ThreadPool #from multiprocessing.dummy import Pool as ThreadPool #这 ...

  4. 使用vue和web3创建你的第一个以太坊APP

    欢迎回到这个很牛的教程系列的第2部分,在教程中我们亲手构建我们的第一个分布式应用程序. 在第二部分中,我们将介绍VueJS和Vuex的核心概念,并引入web3js以与metamask进行交互. 如果你 ...

  5. HDU 1028 整数拆分问题 Ignatius and the Princess III

    Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

  6. PokeCats开发者日志(六)

      现在是PokeCats游戏开发的第九天的晚上,终于将这玩意提交到360移动开放平台进行审核了.   貌似很多平台都需要看这个著作权证明,得了,那我就话400块钱走一遍流程玩玩吧!   办理著作权还 ...

  7. 在submit_bio处使用stapn

    想着在submit_bio的地方,发现在guru模式下,stap是经常性地把内核整挂呀,不得已,也没有发现stap什么比较好的调试方法,所以索性直接使用stap的语法了,但是发现有问题呢,有的时候bv ...

  8. 【bzoj2007】[Noi2010]海拔 最小割+对偶图+最短路

    题目描述 YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个交 ...

  9. 【算法】高斯消元&线性代数

    寒假作业~就把文章和题解3道题的代码扔在这里啦——链接: https://pan.baidu.com/s/1kWkGnxd 密码: bhh9 1.HNOI2013游走 #include <bit ...

  10. POJ 3415 后缀数组+单调栈

    题目大意: 给定A,B两种字符串,问他们当中的长度大于k的公共子串的个数有多少个 这道题目本身理解不难,将两个字符串合并后求出它的后缀数组 然后利用后缀数组求解答案 这里一开始看题解说要用栈的思想,觉 ...