shell函数

执行 shell 脚本

≯℡__Kan透↙ 提交于 2020-02-28 07:39:23
执行脚本 1,脚本文件加上可执行权限 command: itcast$ chmod a+x test.sh //使用chmod命令给脚本文件加上权限 itcast$ ./test.sh //执行可执行文件 当执行以上命令时,shell fork 一个子进程调用exec执行 tese.sh 这个程序,可这个程序是一个脚本文件,它没有代码段和stat函数。 exec 还有另外一种机制,如果执行的是文本文件且第一行指定了解释器,则用该解释器的代码段替换当前进程,并从解释器的stat段开始执行,该文本作为命令行参数传给解释器。 因此执行上述脚本相当于执行程序。 2,指定解析器的目录执行脚本 command: itcast$ /bin/sh ./test.sh //不需要test.sh文件具有可执行权限 总结:1 和 2 两种方式执行脚本的操作影响的是子进程,不会影响到交互式shell。 因为shell 解析器会fork子进程去执行脚本。 例如:命令行下输入的命令用()括号括起来,那么也会fork出一个子Shell执行小括号中的命令 command: itcast$ ( cd .. ; ls -l ) 3,使用shell 的内建命令去执行脚本 command: itcast$ source ./test.sh //source 是shell的内建命令 或者 itcast$ . ./test

shell编程

Deadly 提交于 2020-02-28 06:25:49
1,shell脚本的变量认识 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数,n是一个数字,表示第几个参数。例如第一个参数是$1,第二个参数是$2 $# 表示传递给脚本或者参数的个数 $* 传递给脚本或函数的所有参数 $@ 传递给函数互脚本的所有的参数,被双引号(“ ”),与$*稍有不同 $? 上个命令的退出状态,或函数的返回值 $$ 当前shell进程id。对于shell脚本,就是这些脚本所在的进程id 注释:$*和$@的区别: $*和$@都表示传递给函数或脚本的的所有的参数,不被双引号(“ ”)包含时,都以$1,$2,$3。。。$n的形式输出所有参数,但他们被双引号(“ ”)时,$*会将所有参数作为一个整体,以“$1, $2,$3...$n”的形式输出,$@会将各个参数分开,将以“$1”,“$2”,“$3”。。。“$n”的形式输出 2,一个简单的shell脚本文件 a="雪雪" echo "$a is my favourite" 注意:在定义变量和给变量赋值的时候,变量名和=之间不能有空格,=和变量之间也不要有空格 3,逻辑控制语句 a="雪雪" echo "$a is my favourite" if [ -n "$a" ];then echo "$a long time no see" else echo "$a i miss you" fi# 语法结构#

shell脚本的2类执行方式及区别

拟墨画扇 提交于 2020-02-27 23:11:14
shell脚本不同执行方式及分类 通常可以通过以下命令执行shell脚本文件: 1、source命令 2、.命令 3、sh命令 4、bash命令 5、./脚本文件 不同的执行命令分为2类执行方式: 第一类执行方式 在当前shell环境即执行脚本调用命令的进程中执行(shell中定义的变量会互受影响),在编写shell脚本项目时非常适合引入公共函数及公共变量 相关命令:source命令即.命令 第二类执行方式 在子shell环境即在新创建进程中执行(父shell中只有export的变量会传递给子shell其余变量定义不受影响) 相关命令:sh命令 bash命令 ./脚本文件 脚本代码及演示过程如下 执行示例: 创建3个shell脚本 job1_export.sh --在脚本中定义变量a=123 job2_source.sh --在脚本中通过source命令执行job1_export.sh脚本,并输出变量a --由于在当前shell环境中执行调用,所以变量a的值即为job1脚本中a的赋值 job3_sh.sh --在脚本中通过sh命令执行job1_export.sh脚本,并输出变量a --由于新启进程子shell环境中执行调用,所以变量a的值并不会传递到父shell中,所以a没有被赋值 [root@localhost test]# ll total 12 -rwxr--r--. 1

scrapy shell

断了今生、忘了曾经 提交于 2020-02-27 17:45:50
scrapy shell 说明 scrapy shell [url|file] Interactive console for scraping the given url or file. Use ./file.html syntax or full path for local file. 常用变量(对象和函数) request 最近一次下载对应的Request对象 response 最近一次下载对应的response对象 fetch(req-or-url) 该函数用于下载页面,可传入一个Request对象或url字符串,调用后会更新变量request和response view(response) 该函数用于在浏览器中显示response中的页面 来源: CSDN 作者: Z_sam 链接: https://blog.csdn.net/u010553139/article/details/104374336

shell脚本编程学习(一)

佐手、 提交于 2020-02-27 03:04:48
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言,在后续的博客当中,我会陆续介绍shell脚本的使用。这里是开始篇。 一、shell脚本的基本构成简介: 1、shell脚本通常包含如下部分: 首行     第一行内容在脚本的首行左侧,表示脚本将要调用的shell解释器,内容如下: #!/bin/bash #!符号能够被内核识别成是一个脚本的开始,这一行必须位于脚本的首行,/bin/bash是bash程序的绝对路径,在这里表示后续的内容将通过bash程序解释执行。 注释     注释符号# 放在需注释内容的前面 内容     可执行内容和shell结构 Shell脚本的权限 一般情况下,默认创建的脚本是没有执行权限的。 没有权限不能执行,需要赋予可执行权限,例如给test.sh脚本赋可执行权限,可以使用以下语句。 chmod +x test.sh Shell脚本的执行 1,输入脚本的绝对路径或相对路径 /root/helloWorld.sh ./helloWorld.sh 2,bash或sh +脚本 bash /root/helloWorld.sh sh helloWorld.sh 注:当脚本没有x权限时,root和文件所有者通过该方式可以正常执行。 3,在脚本的路径前再加". " 或source

subprocess模块

纵饮孤独 提交于 2020-02-26 04:54:58
原始地址 subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,连接到它们的 input/output/error 管道,并获取它们的返回(状态)码。这个模块的目的在于替换几个旧的模块和方法,如: os.system os.spawn* subprocess模块中的常用函数 函数 描述 subprocess.run() Python 3.5中新增的函数。执行指定的命令,等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例。 subprocess.call() 执行指定的命令,返回命令执行状态,其功能类似于os.system(cmd)。 subprocess.check_call() Python 2.5中新增的函数。 执行指定的命令,如果执行成功则返回状态码,否则抛出异常。其功能等价于subprocess.run(..., check=True)。 subprocess.check_output() Python 2.7中新增的的函数。执行指定的命令,如果执行状态码为0则返回命令执行结果,否则抛出异常。 subprocess.getoutput(cmd) 接收字符串格式的命令,执行命令并返回执行结果,其功能类似于os.popen(cmd).read()和commands.getoutput(cmd)。 subprocess

Shell编程之case语句与函数

寵の児 提交于 2020-02-26 01:21:59
一、case语句 1.语法结构 2.应用案例 1)脚本传不同值做不同事 2)根据用户需求选择做事 二、函数 1.什么是函数? 2.如何定义函数? 3.函数如何调用? 1)当前命令行调用 2)定义到用户的环境变量中 3)脚本中调用 三、综合案例 1.任务背景 2.具体要求 3.综合分析 4.落地实现 四、正则表达式 1.正则表达式是什么? 2.正则能干什么? 3.正则当中名词解释 4.第一类正则表达式 1)正则中普通常用的元字符 2)正则中其他常用元字符 3)扩展类正则常用元字符 5.第二类正则 6.正则表达式总结 五、正则元字符一栏表 六、正则练习作业 1.文件准备 2.具体要求 七、课后作业 脚本搭建web服务 一、case语句 case语句为多重匹配语句 如果匹配成功,执行相匹配的命令 1. 语法结构 说明:pattern表示需要匹配的模式 case var in 定义变量;var代表是变量名 pattern 1) 模式1;用 | 分割多个模式,相当于or command1 需要执行的语句 ;; 两个分号代表命令结束 pattern 2) command2 ;; pattern 3) command3 ;; *) default,不满足以上模式,默认执行*)下面的语句 command4 ;; esac esac表示case语句结束 2. 应用案例 1)脚本传不同值做不同事

Shell编程之shell基础

∥☆過路亽.° 提交于 2020-02-26 01:21:16
一、shell介绍 1.编程语言分类 2.shell简介 3.shell脚本 1)什么是shell脚本? 2)什么时候用到脚本? 3)shell脚本能干啥? 4)shell脚本的基本写法 5)shell脚本的执行方法 二、变量的定义 1.变量是什么? 2.什么时候需要定义变量? 3.变量如何定义? 4.变量的定义规则 1)变量名区分大小写 2)变量名不能有特殊符号 3)变量名不能以数字开头 4)等号两边不能有任何空格 5)变量名尽量做到见名知意 5.变量的定义方式有哪些? 1)基本方式 2)命令执行结果赋值给变量 3)交互式定义变量(read) 4)定义有类型的变量(declare) 6.变量的分类 1)本地变量 2)环境变量 3)全局变量 4)系统变量 三、简单四则运算 1.四则运算符号 2.了解i++和++i 四、扩展补充 1.数组定义 1)数组分类 2)普通数组定义 3)数组的读取 4)关联数组定义 2.其他变量定义 一、shell介绍 前言: 计算机只能认识(识别)机器语言(0和1),如(11000000 这种)。但是,我们的程序猿们不能直接去写01这样的代码,所以,要想将程序猿所开发的代码在计算机上运行,就必须找"人"(工具)来==翻译成机器语言==,这个"人"(工具)就是我们常常所说的 ==编译器== 或者 ==解释器== 。 1. 编程语言分类 编译型语言: ​ =

第 5 章 shell编程_课后题

Deadly 提交于 2020-02-25 18:56:57
考试题1:用source执行脚本和用bash执行Shell脚本的区别是什么? souce执行脚本相当于是在一个shell当中,而bash执行脚本相当于开启了一个子shell。就变量而言,一个shell当中执行的变量是可以用的,而子shell的变量,父shell中是不能继承的,子脚本执行完后,变量就失效了。 考试题2:如何自定义环境变量? 变量分为:环境变量和普通变量,环境变量定义:例子 echo 'Oldboy=od' >>/etc/bashrc source /etc/bashrc 优先级: /etc/bashrc ~/.bashrc ~/.bash_profile /etc/profile 考试题3:定义变量内容,不加引号、单引号、双引号、反引号结果有什么不同?应该怎么用? 不加引号:默认相当是双引号 数字 单引号:所见即所得,吃啥吐啥 不想被解析的变量、函数 双引号:会将变量、函数、特殊符号等解析出来 字符串 反引号:会先计算反引号里面的命令 想优先计算的命令 考试题4:请分别说出2个以上用于整数运算特殊符号或命令,以及适合小数运算的命令。 整数:(()) expr let $[] 适合小数:bc awk 考试题5:写出特殊变量对应的意义及应用 br/>$0、$n、$#、$*、$@、$?、$$、$!、$_ $0表示文件名 br/>$n表示第n个参数 $#表示参数的个数 $

Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

心不动则不痛 提交于 2020-02-25 12:04:39
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 命令行参数 运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。 请看下面的脚本: #!/bin/bash echo "File Name: $0" echo "First Parameter : $1" echo "First Parameter : $2" echo "Quoted Values: $@" echo "Quoted Values: $*" echo "Total Number of Parameters : $#" 运行结果: $./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara