开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【Shell 编程基础第一部分】Shell脚本HelloShell及简单的Shell基础

简介:
+关注继续查看

本章节分享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脚本的书写,约定俗成,第一行必须如下所示:(务必放在文件的第一行)

#!/bin/sh...

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

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

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. #!/bin/sh 
  2. #对变量赋值: 
  3. himi="HelloShell"  #等号两边均不能有空格存在 
  4. # 现在打印变量a的内容: 
  5. echo "A is:" 
  6. 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. mac:Desktop Himi$ ./himi 
  2. test 
  3. test A 
  4. A test 
  5. A test_OK 
  6. mac:Desktop Himi$ 

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

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

 


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

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

let   表示数学运算

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

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

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

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

 


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

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

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

C shell只支持整数的运算;

运算符如下图所示:

 

简单写几个运算:

注意:

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

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

 










本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/908874,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《Linux 命令行与 shell 脚本编程大全》收官
《Linux 命令行与 shell 脚本编程大全》收官
96 0
《Linux命令行与shell脚本编程大全》读书笔记————第一章 初识Linux shell
本章内容 1、什么是Linux 2、Linux内核的组成   1、1 什么是Linux Linux课划分为以下四部分 a)Linux内核 b)GNU工具 c)图形化桌面环境 d)应用软件   1.1.1 深入探究Linux内核 内核主要负责以下四种功能 a)系统内存管理 b)软件程序管理 c)硬件设备管理 d)文件系统管理   1、系统内存管理 内核不仅管理服务器上的可用内存,还可以创建和管理虚拟内存(即实际上不存在的内存)。
1090 0
《Linux命令行与shell脚本编程大全》23章24章
第二十三章 使用其他shell bash shell是linux发行版中最广泛使用的shell。但是它并不是唯一的选择,还有其他的shell可以供你选择。   23.1 什么是dash shell 百度百科上说:Dash shell是一个Unix shell,比Bash shell小的多,符合POSIX标准。
1368 0
《Linux命令行与shell脚本编程大全》第十八章 图形化桌面环境中的脚本编程
18.1 创建文本菜单 直接上例子吧:   1 #!/bin/bash   2 function menu   3 {   4         clear   5         echo   6         echo -e "\t\t\tSys Admin Menu\n"   7         echo -e "\t1.
1114 0
《Linux命令行与shell脚本编程大全》第十六章 控制脚本
一些控制脚本的方式:向脚本发送信号、修改脚本优先级,在脚本运行时切换到运行模式  16.1 处理信号 linux利用信号与运行在系统中的进程进行通信。 也可以通过对脚本进行编程,使其在收到特定信号时执行某些命令。
1193 0
《Linux命令行与shell脚本编程大全》第十三章 更多的结构化命令
本章讨论bash shell的循环命令for、while和until 13.1 for命令 重复执行一系列命令在编程中很常见。 bash shell提供了for命令,允许你创建一个遍历一系列值的循环。
850 0
《Linux命令行与shell脚本编程大全》第十章 使用编辑器
主要介绍vim, nano, emacs,KWrite,Kate,GNOME 10.1 vim Unix系统最初的编辑器 10.1.1检查vim软件包 先搞明白你所用的Linux系统是哪种vim软件包。
1103 0
《Linux命令行与shell脚本编程大全》第九章 安装软件程序
包管理系统(PMS):用来进行软件安装、管理和删除的命令行工具 9.1包管理基础 1.主流的Linux发行版都采用了某种形式的包管理系统来控制软件和库的安装 2.PMS用一个数据库来记录:系统上安装了什么软件包,每个包安装了什么文件,每个已安装软件包的版本 3 软件包存储在服务器上,可以利用linux系统上的PMS工具通过互联网访问。
1046 0
《Linux命令行与shell脚本编程大全》 第八章管理文件系统
8.1 探索linux文件系统 8.1.1 基本的Linux文件系统 ext:最早的文件系统,叫扩展文件系统。使用虚拟目录操作硬件设备,在物理设备上按定长的块来存储数据。 用索引节点的系统来存放虚拟目录中所存储的文件信息。
941 0
《Linux命令行与Shell脚本编程大全第2版》读书笔记
公司说不准用云笔记了,吓得我赶紧把笔记贴到博客上先。。。。。 近3年前的了,只有一半的章节,后面的没空记录了。。。。 第1章 可以cat /proc/meminfo文件来观察Linux系统上虚拟内存的当前状态 ipcs命令专门用来查看系统上的当前共享内存页面 Ubuntu使用一个表来管理在系统开机时要自动启动的进程,在/etc/init.d目录,可将开机时启动或停止某个应用的脚本放在这个目录下。
1319 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Shell 脚本速查手册
立即下载
《LinuxShell训练营》
立即下载
Python 脚本速查手册
立即下载