shell编程学习

1.Shell 编程跟java、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了

 #!/bin/sh(#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序)

2.shell脚本的扩展名为.sh,回显也用echo

echo 后面的字符串可加引号或不加

显示转义字符

 echo "\"It is a test\""

结果将是:

  "It is a test"

显示变量

read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量

  #!/bin/sh
  read name
  echo "$name It is a test"

4.显示换行

  echo -e "OK!\n" # -e 开启转义
  echo "It it a test"

输出结果:

OK!

It it a test

显示不换行

#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"

输出结果:

OK! It is a test

显示结果定向至文件

  echo "It is a test" > myfile

原样输出字符串,不进行转义或取变量(用单引号)

  echo ‘$name\"‘

输出结果:

  $name\"

显示命令执行结果

  echo `date`

结果将显示当前日期

  Thu Jul 24 10:08:46 CST 2014

3.运行shell脚本的方法

chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本

./告诉系统说就在当前目录找

还可以直接运行解释器,其参数就是shell脚本的文件名

/bin/sh test.sh

4.变量

定义变量的方法和批处理命令差不多(批处理有set,没有双引号)

your_name="runoob.com"

5.for 语句

for file in `ls /etc`

以上语句将 /etc 下目录的文件名循环出来。

6.使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可,变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。如:

your_name="qinjx"
echo $your_name
echo ${your_name}

备注:批处理中引用变量是%变量%

7.字符串

字符串可以用单引号,也可以用双引号,也可以不用引号

单引号

str=‘this is a string‘

单引号字符串的限制:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

双引号

your_name=‘qinjx‘
str="Hello, I know your are \"$your_name\"! \n"

双引号的优点:

双引号里可以有变量

双引号里可以出现转义字符

拼接字符串

your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1

获取字符串长度

string="hello"
echo ${#string}

提取子字符串

string="hello"
echo ${string:1:2}

打印st

8.Shell 数组

bash支持一维数组(不支持多维数组),并且没有限定数组的大小。

定义数组

在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:

数组名=(值1 值2 ... 值n)

例如:

array_name=(value0 value1 value2 value3)

还可以单独定义数组的各个分量:

array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen

读取数组

读取数组元素值的一般格式是:

${数组名[下标]}

例如:

valuen=${array_name[n]}

使用@符号可以获取数组中的所有元素,例如:

echo ${array_name[@]}

获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同,例如:

# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}

9.Shell 注释

以"#"开头的行就是注释,会被解释器忽略。

sh里没有多行注释,只能每一行加一个#号

10.Shell test命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

参数说明-eq等于则为真-ne不等于则为真-gt大于则为真-ge大于等于则为真-lt小于则为真-le小于等于则为真

数值测试

参数    说明
-eq    等于则为真
-ne    不等于则为真
-gt    大于则为真
-ge    大于等于则为真
-lt    小于则为真
-le    小于等于则为真

实例演示:

num1=100
num2=100
if test $[num1] -eq $[num2]
then
    echo ‘The two numbers are equal!‘
else
    echo ‘The two numbers are not equal!‘
fi

输出结果:

The two numbers are equal!

字符串测试

参数     说明
=     等于则为真
!=     不相等则为真
-z 字符串     字符串长度伪则为真
-n 字符串     字符串长度不伪则为真

实例演示:

num1=100
num2=100
if test num1=num2
then
    echo ‘The two strings are equal!‘
else
    echo ‘The two strings are not equal!‘
fi

输出结果:

The two strings are equal!
时间: 2024-10-19 09:32:41

shell编程学习的相关文章

shell编程学习1

1.shell是操作系统的终端命令行 (1)shell可以理解为软件系统提供给用户操作的命令行界面,可以说它是人机交互的一种方式.    (2)我们可以使用shell和操作系统.uboot等软件系统进行交互.具体来说就是我们通过shell给软件系统输入命令然后回车执行,执行完成后又会回到shell命令行可以再次输入         命令执行.    (3)上述的操作方式一般情况下工作很好,但是有缺陷.譬如我们要在linux下创建一个文件a.c,可以touch a.c 但是如果我现在是用在linu

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程序练习:创建一个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脚本的基本元素