shell编程学习1

1、shell是操作系统的终端命令行

(1)shell可以理解为软件系统提供给用户操作的命令行界面,可以说它是人机交互的一种方式。
    (2)我们可以使用shell和操作系统、uboot等软件系统进行交互。具体来说就是我们通过shell给软件系统输入命令然后回车执行,执行完成后又会回到shell命令行可以再次输入         命令执行。
    (3)上述的操作方式一般情况下工作很好,但是有缺陷。譬如我们要在linux下创建一个文件a.c,可以touch a.c 但是如果我现在是用在linux下创建100个文件,分别为a1.c 、a2.c.....a100.c 如果这时候还是手工去命令行下执行命令创建也可以,但是很累。最好的做法就是把创建过程写成一个shell脚本程序,然后去执行这个shell脚本程序,执行这个程序的效果和手工在命令行输入那些命令效果一样的。(回忆在arm裸机中安装交叉编译工具链时,创建arm-linux-xxx的符号链接时)

2、shell是一类编程语言
    (1)编写shell脚本时使用的语言就是shell语言,又叫脚本语言。
    (2)shell脚本其实是一类语言而不是一个语言。

3、常用shell语言:sh、bash、csh、ksh、perl、python等
    (1)在linux下常用的脚本语言其实就是bash、sh;
    (2)perl、python这样的高级shell脚本语言,常用在网络管理配置等领域,系统运维人员一般要学习这些。
    (3)脚本语言一般在嵌入式中应用,主要是用来做配置。(一个复杂的嵌入式程序都是可配置的,配置过程就是用脚本语言来实现的)自然不会使用过于复杂的脚本语言特性,           因此只需要针对性的学习即可。
    (4)linux下最常用的脚本就是bash,我们学习也是以bash为主。

4、shell脚本的运行机制:解释运行
    (1)C语言(C++)这种编写过程是:编写出源代码(源代码是不能直接运行的)然后编译链接形成可执行二进制程序,然后才能运行;而脚本程序不同,脚本程序编写好后源           代码即可直接运行(没有编译链接过程)
    (2)shell程序是解释运行的,所谓解释运行就是说当我们执行一个shell程序时,shell解析器会逐行的解释shell程序代码,然后一行一行的去运行。(顺序结构)
    (3)CPU实际只认识二进制代码,根本不认识源代码。脚本程序源代码其实也不是二进制代码,CPU也不认识,也不能直接执行。只不过脚本程序的编译链接过程不是以脚本程            序源代码为单位进行的,而是在脚本运行过程中逐行的解释执行时才去完成脚本程序源代码转成二进制的过程(不一定是编译链接,因为这行脚本程序可能早就编译连接好          了,这里我们只是调用它)的。

5、动手写第一个shell
    1、编辑器、编译器、运行方法(脚本的3种执行方法)
       (1)shell程序是文本格式的,只要是文本编辑器都可以。但是因为我们的shell是要在linux系统下运行的,所以换行符必须是‘\n‘,而windows下的换行符是"\r\n",因此                  windows中的编辑器写的shell不能在linux下运行。所以我们整个课程都是在linux下使用vi编辑器(实际上是vim)进行编写调试的。
       (2)编译器 不涉及,因为shell是解释性语言,直接编辑完就可以运行。
       (3)shell程序运行的运行有多种方法,这里介绍三种方法:
    第一种:./xx.sh,和运行二进制可执行程序方法一样。这样运行shell要求shell程序必须具有可执行权限。chmod a+x xx.sh来添加可执行权限。
    第二种:source xx.sh,source是linux的一个命令,这个命令就是用来执行脚本程序的。这样运行不需要脚本具有可执行权限。
    第三种:bash xx.sh,bash是一个脚本程序解释器,本质上是一个可执行程序。这样执行相当于我们执行了bash程序,然后把xx.sh作为argv[1]传给他运行。

2、hello world程序和解释
        (1)shell程序的第一行一般都是: #!/bin/sh 这行话以#!开始,后面加上一个pathname,这行话的意思就是指定shell程序执行时被哪个解释器解释执行。所以我们这里写             上/bin/sh意思就是这个shell将来被当前机器中/bin目录下的sh可执行程序执行。
            可以将第一行写为:#!/bin/bash来指定使用bash执行该脚本。
            注意:在ubuntu上面默认使用的解释器sh其实不是bash,而是dash。dash是ubuntu中默认使用的脚本解释器。
         (2)脚本中的注释使用#,#开头的行是注释行。如果有多行需要注释,每行前面都要加#。(#就相当于是C语言中的//)
         (3)shell程序的正文,由很多行shell语句构成。

3、shell并不神秘
         (1)shell就是把以前命令行中键入执行的命令写成了程序。shell其实就是为了避免反复的在命令行下手工输入而发明的一种把手工输入步骤记录下来,然后通过执行shell脚              本程序就能再次复述原来记录的手工输入过程的一种技术。
         (2)shell编辑完可以直接运行(不需编译)

6、shell中的变量定义和引用
    (1)变量定义和初始化。shell是弱类型语言(语言中的变量如果有明确的类型则属于强类型语言;变量没有明确类型就是弱类型语言),和C语言不同。在shell编程中定义变量          不需要制定类型,也没有类型这个概念。
    (2)变量定义时可以初始化,使用=进行初始化赋值。在shell中赋值的=两边是不能有空格的。
        注意:shell对语法非常在意,非常严格。很多地方空格都是必须没有或者必须有,而且不能随意有没有空格。
    (3)变量赋值,变量定义后可以再次赋值,新的赋值会覆盖老的赋值。shell中并不刻意区分变量的定义和赋值,反正每个变量就是一个符号,这个符号的值就是最后一个给他赋         值时的值。
    (4)变量引用。shell中引用一个变量必须使用$符号,$符号就是变量解引用符号。
           注意:$符号后面跟一个字符串,这个字符串就会被当作变量去解析。如果这个字符串本身没有定义,执行时并不会报错,而是把这个变量解析为空。也就是说在shell中                       没有被定义的变量其实就相当于是一个定义并赋值为空的变量。
           注意:变量引用的时候可以$var,也可以${var}。这两种的区别是在某些情况下只能用${var}而不能简单的$var

时间: 2024-12-26 19:34:23

shell编程学习1的相关文章

SHELL编程学习笔记

本文描述unix shell的各种应用实例,根据查阅资料和自我总结,作为自己今后复习的模板.本文搜集整理常用的shell应用实例,以例子详述unixshell部分命令的使用,着重于正则表达式以及grep.sed.awk等命令,涵盖业务开发中需要使用到的unix shell编程命令,供查阅或者自测使用,面向已经熟悉UNIX基本操作的开发人员. 注:   文中大部分表达式在sco-unixunixware 7下使用sh测试通过,有些规则或表达式不能通过测试或结果不正确,在本文档中使用波浪下划线将其标

shell编程学习笔记之特殊变量($0、$1、$2、 $?、 $# 、[email protected]、 $*)

特殊变量($0.$1.$2. $?. $# .[email protected]. $*) shell编程中有一些特殊的变量可以使用.这些变量在脚本中可以作为全局变量来使用. 名称 说明 $0 脚本名称 $1-9 脚本执行时的参数1到参数9 $? 脚本的返回值 $# 脚本执行时,输入的参数的个数 [email protected] 输入的参数的具体内容(将输入的参数作为一个多个对象,即是所有参数的一个列表) $* 输入的参数的具体内容(将输入的参数作为一个单词) [email protected

shell编程学习

1.Shell 编程跟java.php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了  #!/bin/sh(#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序) 2.shell脚本的扩展名为.sh,回显也用echo echo 后面的字符串可加引号或不加 显示转义字符 echo "\"It is a test\"" 结果将是: "It is a test" 显示变量 read 命令从标准输入中读取一行

(七)shell编程学习

1.shell程序练习:创建一个dir文件夹,在dir文件夹里再创建一个cd.c文件 首先vim hello.sh 2.shell中的变量定义和引用 (1)变量定义和初始化.shell是弱类型语言(语言中的变量如果有明确的类型则属于强类型语言:变量没有明确类型就是弱类型语言),和C语言不同.在shell编程中定义变量不需要制定类型,也没有类型这个概念.(2)变量定义时可以初始化,使用=进行初始化赋值.在shell中赋值的=两边是不能有空格的.注意:shell对语法非常在意,非常严格.很多地方空格

简单 Shell编程学习

世界上对 shell 脚本最好的概念性介绍来自一个老的 AT&T 培训视频 .在视频中,Brian W. Kernighan(awk 中的"k"),Lorinda L. Cherry(bc 作者之一)论证了 UNIX 的基础原则之一是让用户利用现有的实用程序来定制和创建复杂的工具. 用 Kernighan 的话来说:"UNIX 系统程序基本上是 -- 你可以用来创造东西的构件.-- 管道的概念是 [UNIX] 系统的基础:你可以拿一堆程序 -- 并将它们端到端连接到一

系统shell编程学习

Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/ Linux入门教程(更新完毕) http://c.biancheng.net/cpp/linux/ 刷掉此页 2015.7.29始

Shell编程学习2--命令大全

Linux中有很多的命令,这些命令可分分为10类(具体参见[1]): 1) 文件管理; 2) 文档编辑; 3) 文件传输; 4) 磁盘管理; 5) 磁盘维护; 6) 网络通讯; 7) 系统管理; 8) 系统设置; 9) 备份压缩; 10) 设备管理. Linux: command1 | command2 "|"其实是Linux里面的一个管道符号, 将两个命令隔开, command1的输出作为command2的输入; 也可以连续使用多个管道, 表示command1的输出作为command

Linux Shell编程学习笔记一:shell简介

Q:什么是Shell,什么是shell脚本? A:Shell是一种用C语言编写的程序,它是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.它是命令语言.命令解释程序及程序设计语言的统称.它的作用就是遵循一定的语法将输入的命令加以解释并传给系统. 命令解释程序:shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用.用户在提示符下输入的命令都由shell先解释然后传给Linux核心.

Linux shell 编程学习笔记--第一章

1.内核从开机自检就放在计算机内存,直到计算机关闭为止,应用程序是放在计算机硬盘的,需要时才调入内存执行. 2.shell就是应用程序,它是连接内核和用户程序的桥梁.用户登入Linux系统的时候,shell就会被调入内存执行.shell图的关系..缺 3.用户有两种方式打开shell(1)通过图形界面的方式,来操作Linux操作系统 (2)两个软件,远程登录.其中登录要输入的IP没太明白,输入谁的IP 4.脚本语言和编译型语言的区别和联系.脚本语言易学难精. 1.3.1 shell脚本的基本元素