欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux中的shell脚本

程序员文章站 2022-03-10 22:04:38
...

shell脚本

shell的概念:

是提供用户与内核的一种交互,是解释器。

脚本的运行方式:

  1. 直接给权限,直接运行脚本
    chmod a+x test.sh 开启一个子进程,在子的进程中执行,子进程不能传递变量到父进程中
  2. 没有权限,通过bash运行脚本
    bash test.sh
    #!/bin/bash 不需要
  3. 没有权限,通过source运行脚本
    . test.sh 是在当前shell环境中执行,变量是可以获得的

shell的命令:

  1. linux命令 /bin/sbin
  2. 内置命令 将一些常用的命令的构造与shell 内部
  3. 实用程序 /usr/bin usr/sbin /usr/local/bin
  4. 用户程序 (可执行的程序)和shell脚本

shell的主要版本:

  1. bash 大多数的Linux 默认的shell
  2. ash 是Linux系统占用资源最少的shell,只有24个命令,不常用,不方便
  3. sh 是UNIX的标准shell
  4. ksh 是UNIX的标准
  5. csh 是面向C语言的脚本shell

通配符:

• * 匹配任何字符和任何数目的字符
• ? 匹配单一数目的任何字符
• [] 匹配[]之内的任意字符
• [!] 匹配[]之外的任意字符,!表示非的意思
第一个脚本程序:

#! /bin/bash
echo "hello world"

. test.sh

变量:

定义变量:
var=“value” 定义
${var} 取值, {}定义一个边界,区分
$var

for str in "sgfdsgdafdsa"
do
 echo"I am ${str}script"
done

只读变量:
#! /bin/bash
var=“2222”
readonly var #只读变量

删除变量:
unset var # unset 变量的名字

变量类型:

局部变量
全局变量
环境变量

定义在shell 中的变量成为shell 的局部变量
export var 定义全局的变量,在父进程中可也使用

shell 中的特殊变量:

$0 当前脚本的文件名
$1…n 给脚本的参数,1是第一个参数,第二个$2
$# 参数的个数
$? 命令的退出状态
$$ 当前shell的进程ID

命令行参数:

内容:#! /bin/bash
echo “file name $0”
echo “first Parameter $1”
echo “second Parameter $2”
运行:. test.sh ww ee

转义字符:

\ 反斜杠
\a 报警
\b 删除键
\f 换页
\n 换行
\r 回车
\t tab键
注意:echo的命令中-E 选项禁止转义

关系运算符:(只支持数字,不支持字符串,除非字符串本身就是数字)

-eq 相等
-ne 不相等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于

逻辑运算符:

! 非运算
-o 或运算
-a 与运算

a=20
b=10
[ $a lt 20 -a $b -gt 100 ] 返回false
[ $a lt 20 -o $b -gt 100 ] 返回ture

字符串运算符:

s1=www
s2=eee

= [ $s1 = $s2 ] 返回false
!= [ $s1 != $s2 ] 返回true

-z 检查字符串长度是否为0,0返回true [ -z $s1 ] false
-n 检查字符串长度是否为0,不为0 返回true [ -n $s1 ] true

其他检测逻辑运算:

shell 的逻辑判断[]等于test命令
-b 检查文件是否是块的的设备文件 [ -b $file ]
-d 检查是否是目录
-f 检查是否是文件
-r 文件是否可读
-w 文件是否可写
-x 文件是否可执行
-e 文件是否存在
-s 文件是否为空

shell的字符串:

“ ”双引号------中间可以带入变量
‘ ’单引号------是原样输出
执行命令==()() 注意`` 这个是老用法,新的用法是(),表示命令的执行

相关标签: shell