Please enable JavaScript.
Coggle requires JavaScript to display documents.
Linux下编程工具(shell脚本) - Coggle Diagram
Linux下编程工具(shell脚本)
shell语法
shell脚本的定义与执行
shell脚本的定义与执行::1、定义以开头:#!/bin/sh #!用来声明脚本由什么shell解释,否则使用默认shell 2、单个"#"号代表注释当前行 3、执行:#chmod +x test.sh ./test.sh 增加可执行权限后执行 #bash test.sh 直接指定使用bash解释test.sh #. test.sh(source test.sh) 调用默认shell解释test.sh
-
变量
环境变量:
shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,我们在shell中可以直接使用$name 引用 定义:一般在~/.bashrc或/etc/profile文件中(系统自动调用的脚本)使用export设置,允许用户后来更改VARNAME = value ;export VARNAME
常见环境变量:HOME:用于保存注册目录的完全路径名。 PATH:用于保存用冒号分隔的目录路径名, shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。 HOSTNAME:主机名 SHELL:默认的shell命令解析器 LOGNAME:此变量保存登录名 PWD:当前工作目录的绝对路径名
预设变量
预定义变量: $#:传给shell脚本参数的数量 $#:传给shell脚本参数的内容 $1、$2、$3、...、$9:运行脚本时传递给其的参数,用空格隔开 $?:命令执行后返回的状态"$?"用于检查上一个命令执行是否正确(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错)。
自定义变量
-
-
注意事项:1、变量名只能英文字母数字下划线,不能以数字开头 2、等号两边不能直接接空格符,若变量中本身就包含了空格,则整个字符串都要用双引号、或单引号括起来;双引号内的特殊字符可以保有变量特性,但是单引号内的特殊字符则仅为一般字符。
条件测试语句: 在写shell脚本时,经常遇到的问题就是判断字符串是否相等,可能还要检查文件状态或进行数字测试,只有这些测试完成才能做下一步动作 test命令:用于测试字符串、文件状态和数字 test命令有两种格式:test condition 或[ condition ]使用方括号时,要注意在条件两边加上空格
控制语句:if [条件1]; then执行第一段程序 else 执行第二段程序 fi for (( 初始值; 限制值; 执行步阶 ))do程序段done 初始值:变量在循环中的起始值限制值:当变量值在这个限制范围内时 ,就继续进行循环 declare是bash的一个内建命令,可以用来声明shell变量、设置变量的属性。declare也可以写作typeset。
函数
-
定义函数的两种格式:函数名() {function 函数名() {命令 ...命令 ...}} 函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中 所有函数在使用前必须定义,必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用
调用函数的格式为:函数名 param1 param2…… 使用参数同在一般脚本中使用特殊变量$1,$2 ...$9一样 函数可以使用return 提前结束并带回返回值return 从函数中返回,用最后状态命令决定返回值。 return 0 无错误返回 return 1 有错误返回
shell概述
shell的两层含义:既是一种应用程序,又是一种程序设计语言 作为应用程序:交互式地解释、执行用户输入的命令,将用户的操作翻译成机器可以识别的语言,完成相应功能 作为程序设计语言:它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支完成类似于windows下批处理操作,简化我们对系统的管理与应用程序的部署
作为应用程序: 称之为shell命令解析器 shell是用户和Linux内核之间的接口程序用户在提示符下输入的命令都由shell先解释然后传给Linux核心它调用了系统核心的大部分功能来执行程序、并以并行的方式协调各个程序的运行
作为程序设计语言:称之为shell脚本 我们学过的c/c++等语言,属于编译性语言(编写完成后需要使用编译器完成编译、汇编、链接等过程变为二进制代码方可执行) shell脚本是一种脚本语言,我们只需使用任意文本编辑器,按照语法编写相应程序,增加可执行权限