shell是Linux系统的命令解释性程序,它负责将用户输入的命令传递给内核执行并将执行结果反馈给用户,Linux系统有多种shell可供选择,Ubuntu默认的shell是bash。

shell程序的基本结构

shell程序就是将一系列Linux流程控制写在一个文本文件中,由shell读取此文件并执行文件中的这些程序。

#!/bin/bash
#hello.sh
echo 'hello Linux'
echo 'this is a shell file'

上面就是一段简单的shell程序,接下来赋予hello.sh执行权限

chmod +x hello.sh

执行hello.sh

./hello.sh

shell程序第一行以#!开头,后面接上shell解释器的完整路径;第二行以注释方式给出程序的名称,shell程序中“#”后面的内容是注释信息,不影响程序的执行。

局部变量

程序需要变量来存储数据,shell的变量可分为局部变量、环境变量和位置变量。shell是一种解释性语言,编程时不需要声明变量,当对一个变量赋值时也就定义了变量。局部变量只在当前进程和程序中有效。
shell程序的变量没有数据类型,可以使用一个变量存放不同数据类型的数据,变量赋值之后,在变量前加$就可以访问变量的值。

环境变量

环境变量是一个用户所有进程都可以访问的变量,系统中常常使用环境变量来存储常用信息。使用export命令可以查看环境变量列表。

访问环境变量:echo $SSH_ASKPASS
定义环境变量:export XX=1234

位置变量

位置变量是指shell程序在运行时传入的参数,程序中可以用变量的形式来调用这些参数。这些参数存放在1~9的9个特殊变量名中,所以成为称为位置变量。同普通变量一样变量名前用$访问。
在位置变量中,$0的值为bash,$1以后变量是输入参数的列表,例如下面的shell程序是访问位置变量的实例:

#!/bin/bash
#site.sh
echo $1
echo $2
echo $3

shell的运算符

变量赋值:shell中使用“=”进行变量赋值
算数运算符:类似C语言,使用运算符时,需要注意运算顺序的问题,例如

echo 1+2

结果并没有输出结果3,而是1+2,在shell中有3种方法可以更改运算符顺序。

  • expr改变运算顺序,可以用echo 'expr 1 + 2 ',注意`不是单引号,而是Tab键上面的那个符号。
  • 用let指示数学运算,可以先将结果赋给b,运算符指令是let b=1+2,然后用echo $b输出结果。

注意:exp表达式中,加号前后都有空格!

输入和输出

echo $str                 #结果输出到终端
echo $str >file           #结果保存到file文件,如果没有自动新建;已有则覆盖
echo $str >>file          #结果追加到文件file

如果要输出特殊字符,必须加-e选项

到此为止,有空再写!

标签: none

评论已关闭