[脚本]Shell脚本入门

  • A+
所属分类:qq空间引流吧
摘要

Shellscript(Shell脚本)的工作方式有两种:①交互式(Interactive):用户每输入一条命令,然后Shell立即执行一次;②批处理(Batch):由用户实现编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令。

  Shell script(Shell脚本)的工作方式有两种:

  ①交互式(Interactive):用户每输入一条命令,然后Shell立即执行一次;

  ②批处理(Batch):由用户实现编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令。

  查看系统可用的shell(/etc/shells文件)

  [脚本]Shell脚本入门

  Linux系统默认的命令行终端解释器为Bash

  [脚本]Shell脚本入门

  Shell脚本文件的格式:

  第一行(一般必须写明):指定脚本使用的shell(若不写明也不影响脚本的执行,系统会自动以sh解析脚本)。"#!/bin/bash"声明文件内的语法使用bash的语法,当这个程序被执行时,加载bash的相关环境配置文件(一般是non-login shell中的~/.bashrc文件)。

  第二部分的注释(可写):程序内容的说明。shell脚本中,井号#用作批注(除第一行的"#!"外),shell不会解释以#开头的行(除第一行bash声明外)。

  主要环境变量的声明(可写)

  脚本的程序部分。

  程序执行结束,回传一个数值给系统告知执行的结果(可写。默认命令执行成功返回数值0)。

  [脚本]Shell脚本入门

  脚本文件test1.sh的执行方式:

  以sh(bash)进程来执行脚本文件(用户不必拥有对脚本文件的x权限)(在子进程中执行)

  [脚本]Shell脚本入门

  sh -x:实现shell脚本逐条语句的跟踪

  [脚本]Shell脚本入门

  sh -n:不执行脚本,仅进行语法的检查

  [脚本]Shell脚本入门

  sh -v:执行脚本前,先将脚本的内容输出到屏幕上

  [脚本]Shell脚本入门

  通过绝对或相对路径来执行脚本文件(用户须拥有对脚本文件的x权限)http://www.526bt.com/

  (Linux系统中一切都是文件。后缀名.sh仅提示用户该文件是一个脚本文件,并不代表该文件是可以被用户执行的。文件是否可以被执行在于用户是否拥有对该文件的x权限)(在子进程中执行)

  [脚本]Shell脚本入门

  将脚本文件所处的目录添加到PATH环境变量中,通过输入脚本文件名来直接运行(用户须拥有对脚本文件的x权限)(在子进程中执行)

  [脚本]Shell脚本入门

  通过source命令或小数点(.)来执行脚本文件(在父进程中执行)

  [脚本]Shell脚本入门

  用方式①/②/③执行test2.sh脚本,执行完成后回到命令行模式(父进程)输出脚本中设置的变量,发现变量并不存在

  (通过上述①/②/③方式(bash(sh)、绝对/相对路径或者将路径添加到$PATH中)来运行脚本时,该script会使用一个新的bash环境(子shell、子进程)来执行脚本内的命令。当子进程完成后(脚本执行结束),子进程内的各项变量或操http://www.526bt.com/作将会消失而不会传回给父进程中。)

  [脚本]Shell脚本入门

  [脚本]Shell脚本入门

  若通过source命令或小数点(.)来执行脚本,该script会在父进程中执行。因此,父进程拥有脚本内设置的变量、操作等。

  [脚本]Shell脚本入门

  [脚本]Shell脚本入门

  bash shell中的数学运算:在方括号内计算数学公式 [ operation ],结果赋值为result=$[ operation ]。

  [脚本]Shell脚本入门http://www.526bt.com/

  [脚本]Shell脚本入门

  数学运算浮点解决方案:使用bc命令(bash的内建计算器)。

  选项

  作用

  -q

  不显示bc计算器的欢迎信息

  输入quit或组合键ctrl+d可退出bc计算器

  [脚本]Shell脚本入门

  浮点运算是由内建变量scale(数值范围)控制的,须将这个值设置为希望在计算结果中保留的小数位数,默认值为0。

  [脚本]Shell脚本入门

  在脚本中使用bc命令,通过命令替换$(),将输出结果赋值给一个变量:

  基本格式为 variable=$(echo "options; expression" | bc)

  [脚本]Shell脚本入门

  [脚本]Shell脚本入门

  使用内联输入重定向<<,在命令行中重定向数据(特别适用于进行大量运算):

  基本格式为 varible=$(bc << EOF

  options

  statements

  expressions

  EOF

  )

  EOF字符串标识了重定向给bc命令的数据的终止。

  [脚本]Shell脚本入门

  bash计算器中创建的变量只在bash计算器中有效。

  [脚本]Shell脚本入门

  Shell中运行的每个命令都使用退出状态码告诉shell它运行完毕。退出状态码:0-255的整数值,在命令结束运行时由命令传给shell。变量$?用于保存上个已执行命令的退出状态码。退出状态码可配合exit命令使用。

  状态码

  描述

  0

  命令成功结束

  1

  一般性未知错误

  2

  不适合的shell命令

  126

  命令不可执行

  127

  没找到命令

  128

  无效的退出参数

  128+x

  与Linux信号x相关的严重错误

  130

  通过ctrl+c终止的命令

  255

  正常范围之外的退出状态码

  Shell script的的默认变量(接受用户参数的变量)

  $0:当前Shell脚本程序的名称;

  $#:参数的个数;

  $*:所有位置的参数值;

  $?:上一条命令的执行返回值;

  $1、$2、$3……:第N个位置的参数值。

  [脚本]Shell脚本入门

  [脚本]Shell脚本入门

  [脚本]Shell脚本入门

  test(测试):判断条件表达式是够成立。格式:test [参数]。单独执行test命令后不会显示任何信息。

  可通过echo $?输出上一条命令(test命令)执行后的返回结果,若为0则表示执行(判断)成功

  [脚本]Shell脚本入门

  或通过&&、||来显示相关结果

  [脚本]Shell脚本入门

  文件测试所用的参数

  操作符

  作用

  -e file1

  测试file1文件是否存在(exist)

  -d file1

  测试file1文件是否为目录类型,且是否存在(directory)

  -f file1

  测试file1文件是否为一般文件,且是否存在(file)

  -r file1

  测试当前用户对file1文件是否有读取权限(read)

  -w file1

  测试当前用户对file1文件是否有写入权限(write)

  -x file1

  测试当前用户对file1文件是否有执行权限(execute)

  file1-nt file2

  测试file1是否比file2新(newer than)(检查文件日期)

  file1-ot file2

  测试file1是否比file2旧(older than)

  整数测试所用的参数

  操作符

  作用

  n1 -eq n2

  检查n1是否等于n2(equal)

  n2 -ne n2

  检查n1是否不等于n2(not equal)

  n1-gt n2

  检查n1是否大于n2(greater than)

  n1 -lt n2

  检查n1是否小于n2(less than)

  n1 -le n2

  检查n1是否等于或小于n2(less equal)

  n1 -ge n2

  检查n1是否大于或等于n2(greater equal)

  Shell中不应使用"=="和"!="进行整数的比较(会将整数当作字符串来比较)

  来自

  字符串测试所用的参数

  操作符

  作用

  str1==str2

  比较str1与str2字符串的内容是否相同

  str1 !=str2

  比较str1与str2字符串的内容是否不同

  -z str1

  判断str1字符串长度是否为0(或未被定义)

  -n str1

  判断str1字符串长度是否为非0

  str1 > str2

  判断str1是否比str2大(逐位比较字符串的每个字符,按字典顺序比较大小)

  str1 < str2

  判断str1是否比str2小

  (使用>、<(大于号、小于号)进行判断时必须搭配转义字符/使用,否则shell会误认为是重定向符号,把后字符串误当成文件名)(比较字符串顺序大小的测试中,大写字母会被认为是小于小写字母的(与sort命令恰恰相反,在英语环境下sort命令会认为大写字母是大于小写字母的,即排序结果中小写字母优先于大写字母出现))

  [脚本]Shell脚本入门

  [脚本]Shell脚本入门

  [脚本]Shell脚本入门

  多重条件判断

  操作符

  作用

  test1 -a test2

  类似于&&,两个测试条件同时成立时才回传true(and)

  test1 -o test2

  类似于||,任一测试条件成立就回传true(or)

  ! test1

  反向状态(取反)

  [](中括号):判断符号。bash shell提供的另一种条件测试方法,作用同等与test命令,常用于if…then条件判断式中。

  中括号的两端、每个组件间都需要有空格符来分隔。

  [脚本]Shell脚本入门

  中括号内的变量、常量,最好都以双引号或单引号括起来。

  [脚本]Shell脚本入门

  [ "$yn"=="Y" -o "$yn"=="y" ] 也可写成 [ "$yn"=="Y" ] || [ "$yn"=="y" ] (布尔逻辑能将可能的返回值简化为TRUE或FALSE类型)

  [脚本]Shell脚本入门

  [脚本]Shell脚本入门

分享当前页面将至少获得10%佣金,点此获取推广链接(规则说明)。

本站VIP源码资源永久免费下载!持续更新!www.526bt.com

加入999永久VIP会员带做项目包赚钱!教引流包搭建,社群资源共享!

新项目更新通知QQ群:767688774 站长技术交流QQ付费群:552760713

点击这里给我发消息备用QQ:点击这里给我发消息

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 源码安装视频教程
  • 教程项目网赚APP扫码下载
  • weinxin

admin
提供APP打包服务,APP封装
PHP源码安装ASP源码HTML源码安装服务
月入30万的在家创业开淘宝的教程!收徒!一对一指导!包赚钱!
双轨三轨直销系统开发,可定制制度开发。
广告也精彩

发表评论

您必须才能发表评论!