shell函数

Linux-开发与管理 P1 shell编程

三世轮回 提交于 2020-02-05 13:32:20
文章目录 Linux-开发与管理 P1 shell编程 shell基础 shell简介 shell历史 命令格式 linux命令 文件文档相关 文件管理 文档编辑 文件传输 磁盘相关 网络通讯 系统设备相关 shell脚本 shell脚本基础 基础语法 变量 shell程序 说明性语句 功能性语句 结构性语句 shell函数 脚本调用 更多内容 Linux-开发与管理 P1 shell编程 shell基础 shell简介 什么是shell? Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁 Shell 既是一种 命令语言 ,又是一种 程序设计语言 Shell 是指一种 应用程序 ,这个应用程序提供了一个 界面 ,用户通过这个界面访问 操作系统内核的服务 shell 翻译成中文就是 贝壳 的意思,它就是Linux内核的一个 外层保护工具 ,并负责完成用户与内核之间的交互 shell能用来干什么? shell 是一个 命令行解释器 ,将用户命令解析为操作系统所能理解的指令,从而实现用户与操作系统的交互。同时,shell为操作系统提供了内核之上的功能,直接用来管理和运行系统。 shell历史 这是shell发展的时间图,这里主要来了解几种比较常用和熟悉的 Bourne Shell 简称 sh 由AT&T贝尔实验室的S.R.Bourne开发,也因开发者的姓名而得名

Linux基础(五) Shell函数

落爺英雄遲暮 提交于 2020-02-05 12:10:09
Shell 函数 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。 shell中函数的定义格式如下: [ function ] funname [()] { action; [return int;] } 说明: 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。 2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255 下面的例子定义了一个函数并进行调用: #!/bin/bash # author:菜鸟教程 # url:www.runoob.com demoFun(){ echo "这是我的第一个 shell 函数!" } echo "-----函数开始执行-----" demoFun echo "-----函数执行完毕-----" 输出结果: -----函数开始执行----- 这是我的第一个 shell 函数! -----函数执行完毕----- 下面定义一个带有return语句的函数: #!/bin/bash # author:菜鸟教程 # url:www.runoob.com funWithReturn(){ echo "这个函数会对输入的两个数字进行相加运算..." echo "输入第一个数字: " read aNum echo

shell编程(五)之函数

。_饼干妹妹 提交于 2020-02-05 12:09:53
function:函数 函数只有被调用才会执行 如何调用:给定函数名   函数名出现的地方,会被自动替换为函数代码 函数的生命周期:被调用时创建,返回时终止 return命令返回自定义状态结果   0:成功   1-255:失败 语法一:   function f_name {   ...函数体... } 语法二: f_name(){   ...函数体... } 练习: 写一个脚本,完成如下要求 1.脚本可接受参数:start,stop,restart,status 2.如果参数非此四者之一,提示使用格式后报错退出 3.如果是start,则创建/var/lock/subsys/SCRIPT_NAME,并显示启动成功 考虑: 如果事先已经启动过一次,该如何处理 4.如果是stop,则删除/var/lock/subsys/SCRIPT_NAME,并显示停止完成 考虑: 如果事先已然停止过了,该如何处理 5 如果是restart,则先stop,在start 考虑:如果本来没有start,如何处理 6.如果是status,则: 如果/var/lock/subsys/SCRIPT_NAME文件存在,则显示”SCRIPT_NAME is running“ 如果/var/lock/subsys/SCRIPT_NAME文件不存在,则显示”SCRIPT_NAME is stopped“ #!/bin

Shell脚本笔记(五)Shell函数

心不动则不痛 提交于 2020-02-05 12:09:36
Shell函数 1.定义语法 标准写法: funciton funName () { order....... return n } 简化写法1: funciton funName { order....... return n } 简化写法2: funName () { order....... return n } 注意: 1)不加rueturn的情况下,函数返回码是函数中最后一条命令返回的退出状态码。 2)退出状态码必须是0~255 2.函数执行 1)不带参数函数:直接函数名 funName 2)带参数函数: funName arg1 arg2(必须放在同一行) 3)函数命令行上任何参数都可以通过 $1 $2......取得 1 #!/bin/bash 2 test () { 3 echo $[ $1 * $2 ] 4 } 5 test $1 $2 #函数参数位置变量,使用脚本参数位置变量 3.注意事项: 1)可以使用 "."或者"source"来加载定义在独立文件中的函数,以供调用 2) 使用local定义局部变量 3) 可使用位置变量作为函数的参数使用,此时父亲脚本中的位置参数被临时覆盖,函数执行完毕后恢复 4)函数的输出 result=$(fun) 5)获取命令行最后一个参数${!#},不是${$#}因为不能再花括号内使用美元符。 来源: https://www

Shell脚本(五)函数

大憨熊 提交于 2020-02-05 12:09:19
总结下shell中的函数用法 #!/bin/bash function add_v1() { echo "call function add" } function add_v2() { echo "number of params: $#" echo "first param: $1" echo "second param: $2" local sum=0 for item in $@ do sum=$(($sum + $item)) done echo "result is $sum" } function add_v3() { local sum=0 for item in $@ do sum=$(($sum + $item)) done return $sum } # another way to return value function add_v4() { local sum=0 for item in $@ do sum=$(($sum + $item)) done echo $sum } global_variable=0 function add_v5() { local sum=0 for item in $@ do sum=$(($sum + $item)) done global_variable=$sum } add_v1 add_v2 10 20 30

shell编程(一)之变量

情到浓时终转凉″ 提交于 2020-02-04 20:04:00
变量:命名的内存空间 bash的变量种类: 根据变量的生效范围等标准 本地变量: 生效范围为当前shell进程;对当前shell之外的其他shell进程,包括当前shell的子shell进程均无效 环境变量: 生效范围为当前shell进程及其子进程 局部变量: 生效范围为当前shell进程中某代码片段(通常指函数) 位置变量: $1,$2...来表示,用于让脚本在脚本代码中调用通过命令行传输给它的参数 特殊变量: $?、$0, $*, $@, $# 变量命名法则: 1. 不能使用程序中的保留字:if,for 2. 只能使用数字、字母及下划线,且不能以数字开头 3. 见名知意 只读变量: readly name declare -r name 本地变量: 变量赋值:name='value' 可以使用引用: value: 1. 可以是直接字串,name="username" 2. 变量引用: name="$username" 3.命令引用: name=`COMMAND`,name=$(COMMAND) 变量引用:${name}, $name "": 弱引用,其中的变量引用会被替换为变量值 '': 强引用,其中的变量引用不会被替换为变量值,而保持原字符串 显示已定义的所有变量 set 销毁变量:unset name 环境变量: 变量声明、赋值 export name=VALUE

Linux Bash语法总结

喜欢而已 提交于 2020-02-04 12:05:46
在学习Linux的过程中,无可避免的会碰到一个既让人喜欢、又令人十分头疼的神奇的东西——bash编程,也就是shell脚本。那么什么是shell脚本呢?shell是一个命令语言解释器,而shell脚本则是Linux命令的集合,按照预设的顺序依次解释执行,来完成特定的、较复杂的系统管理任务,类似于windows中的批处理文件。本篇博文主要介绍bash编程的基础语法讲解。 一、bash编程之变量 1)bash变量类别 本地变量:只对当前shelll进程有效的变量,对其他shell进程无效,包含当前shell进程的子进程。 2)变量赋值: 即向变量的存储空间保存数据,如下 [root@localhost ~]# VAR_NAME=VALUE 3)变量的引用 格式为:${VAR_NAME} " ":弱引用,里面的变量会被替换; ' ':强引用,里面的所有字符都是字面量,直接输出,所见即所得; 4)环境变量 对当前shell进程及其子shell有效,对其他的shell进程无效! 定义:VAR_NAME=VALUE 导出:export VAR_NAME 撤销变量:unset VAR_NAME 只读变量:readonly VAR_NAME 5)局部变量 在shell脚本中定义,只可以在shell脚本中使用! 6)位置变量 $1,$2...,${10} 7)特殊变量 shell对一些参数做特殊处理

shell中函数的定义 if语句 for循环 while循环

不羁岁月 提交于 2020-02-04 02:15:57
shell中函数的定义 if语句 for循环 while循环 文章目录 shell中函数的定义 if语句 for循环 while循环 1.函数的定义 2.if语句 3.for循环 4.while循环 1.函数的定义 举例: #!/bin/bash foo(){ #定义函数 echo $* } bar(){ #定义函数 echo $@ } foo 1 2 3 4 #调用函数 bar 1 2 3 4 #调用函数 具体格式: 定义函数: 函数名(){ 函数要执行的内容 ..... } 调用函数: 函数名 要传递的参数 2.if语句 举例: #!/bin/bash if [ "$1" == 10 ] then exit 0 #参数正确 退出状态为0 else exit 1 #参数不正确 退出状态为1 fi 具体格式: if [ 条件 ] then 符合条件时要做的事 else 不符合条件时要做的事 fi 3.for循环 举例: #!/bin/bash test(){ echo "未加引号,二者相同" echo $* echo $@ echo "加入引号后对比" echo "-------" for N in "$*" do echo $N done echo "########" for N in "$@" do echo $N done } test 11 22 33 具体格式: for

PHP命令执行漏洞基础

浪尽此生 提交于 2020-02-02 05:46:03
前言 PHP命令执行漏洞 应用程序的某些功能功能需要调用可以执行系统命令的函数,如果这些函数或者函数的参数被用户控制,就有可能通过命令连接符将恶意命令拼接到正常的函数中,从而随意执行系统命令,这就是命令执行漏洞。 基本函数 1.system()用于执行外部程序,并且显示输出 <?php system('whoami'); ?> 2.exec()函数用于执行一个外部程序 <?php exec('whoami');?> 3.shell_exec()函数通过shell环境执行命令,并且将完整的输出以字符串的方式返回 <?php shell_exec('whoami'); ?> 4.passthru函数用于执行外部程序并且显示原始输出 <?php passthru('whoami'); ?> 5.popen()函数用于打开进程文件指针 r: 只读。 w: 只写 (打开并清空已有文件或创建一个新文件) <?php touch popen("3.txt","r"); ?> 在当前目录创建名为3.txt的文件 6.Proc_popen函数用于执行一个命令,并且打开来输入输出的文件指针(有问题) proc_open (字符串 $cmd ,数组 $descriptorspec ,数组 &$pipes [,字符串 $cwd = NULL [,数组 $env = NULL [,数组 $other

说说shell脚本中的export 和 source,bash

蹲街弑〆低调 提交于 2020-02-01 03:47:21
小弟刚刚接触linux,对linux上的很多东西都比较陌生,所以写一写博客,当做自己工作的总结和技术的积累吧,也是鞭策自己不断努力的去学习。 今天之所以起这个标题,把export,source ,bash这三个命令放在一起讲,实在是因为自己做了一件蠢事。 什么样的蠢事先不说。先分析下这三个命令。 首先是export命令。 1.export命令 Linux export命令用于设置或显示环境变量。 在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。同时,重要的一点是,export的效力仅及于该次登陆操作。注销或者重新开一个窗口,export命令给出的环境变量都不存在了。 该命令的语法如下: export [-fnp][变量名称]=[变量设置值] 其中: -f  代表[变量名称]中为函数名称。 -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。 -p  列出所有的shell赋予程序的环境变量。 你可以只打出export来查看当前的所有环境变量。如果你要在某个环境变量(比如PATH)中加入一些新的路径(如/bin/bash),可以使用如下命令格式 export PATH=/bin/bash:$PATH 就OK了。 2.bash命令 像sh,bash,./命令是用来执行shell脚本的