shell命令

Shell学习

第一节 基本语法

变量 表达式 判断语句 If表达式

一、先来看一个简单的shell程序:

mkdir test

cd test/

vim example01.sh

example.sh

#!/bin/bash等于#!/bin/sh (#!跟shell命令的完全路径。 作用: 显示后期命令以哪种shell来执行这些命令, 可用which bash查看绝对路径, 如果不指定shell,以当前shell作为执行的shell)

如果想以其他shell执行, 需写到绝对路径上 cat /etc/shells

例如: 想写php脚本可用: #!/bin/php后期会以php来执行下面的命令

echo "our first example"

执行命令

chord +x example.sh

./example.sh

shell中以#开头表示,整行被当作一个注释,执行时被忽略。

shell程序一般以.sh结尾

总结: 创建shell程序步骤:

第一步: 创建一个包含命令和控制结构的shell文件

第二步:修改这个文件的权限使它可以执行

使用 chmod u+x

第三步: 执行

方法1. ./example.sh

方法2: 使用绝对路径

方法3: 使用 bash example.sh

二、shell变量

变量是shell传递数据的一种方法。变量是用来代表每个值的符号名。

例: x = 3 (x就是变量)

Shell有两类变量: 临时变量和永久变量

临时变量: 是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括用户自定义变量、位置变量、预定义变量。

永久变量: 是环境变量,其值不随shell脚本的执行结束而消失。

例:环境变量: echo $PATH

用作运行某个命令的时候,本地查找不到某个命令或文件,会到这个声明的目录中去查找。(which ls去查找)

用户定义变量: 由字母或下划线开头。由字母、数字或下划线组成,并且大小写字母意义不同。变量名长度无限制。

使用变量值时,要在变量名前加上前缀”$”

例:1VAR是非法变量

变量赋值: 赋值号”=” 两边应该没有空格

例: A=aaa (A = aaa会提示command not found)

将一个命令的执行结果赋给变量:

“`

A=date

echo $A

“`

“`

B=$(ls -l) === ls l

echo $B

A=$B

Echo $A

“`

可拼接成新的变量

“`

B=mon

echo Today is $mon day

echo Today is ${mon}day

“`

列出所有的变量: set命令

set | grep DAY

单引号和双引号区别

单引号之间的内容原封不动的指定给变量。

双引号取消了空格的作用,特殊符号的含义保留。

删除变量 unset

unset NAME

位置变量和特殊变量

位置变量 : shell执行解释执行用户的命令时,将命令行的第一个字作为命令名,而其它字作为参数。由出现在命令行上的位置确定的参数称为位置参数。

位置变量: 使用$N 来表示

$0 $n这个程序的第n个参数值 n=1…n

特殊变量: 不能被修改。一执行程序时就有了,由以下特殊变量

  1. $* 这个程序的所有参数
  2. $# 这个程序的参数个数
  3. $$ 这个程序的PID
  4. $! 执行上一个后台程序的PID
  5. $? 执行上一个指令的返回值

Read: 作用:从键盘中读入数据,赋值给变量

expr: 作用shell变量的算数运算(整数型变量进行算术运算)

语法: expr.表达式 (运算符之间要有空格)

var1 = 8

var2 = 7

expr $val / 2(结果是4)

$var1 + $var2`

变量测试语句: test 测试条件(测试范围: 整数,字符串,文件)

test str1 == str2 是否相等

test str1 != str2 是否不相等

test str 测试字符串是否不空

test -n str 测试字符串是否为空

test -z str 测试字符串是否为空

测试整数

test int1 -eq int2。等于

test int1 -ge int2。>=

test int1 -gt int2。>

test int1 -le int2。<=

test int1 -lt int2。<

test int1 -ne int2

可以省略test : [int1 -lt init2]

文件测试

test -d file 测试是否为目录

test -f file 文件

test -x file 可执行

-r 可读

-w 可写

-e 文件是否存在

-s 是否是空文件

说明: 省略test : [-x file]

===== 流程控制 ====

If 条件 then 语句1 ( else 语句2 ) fi

扩展;分号表示两个两个命令写在一行互不影响

多条件

-a 或 && 逻辑与 -o 或 || 逻辑或

相关推荐