shell函数

Linux Bash Shell快速入门 (三)

混江龙づ霸主 提交于 2019-12-20 10:20:43
for for 循环结构与 C 语言中有所不同,在 BASH 中 for 循环的基本结构是: for $var in do statments done 其中 $var 是循环控制变量, 是 $var 需要遍历的一个集合,do/done 对包含了循环体,相当于 C 语言中的一对大括号。 另外如果do 和 for 被写在同一行,必须在 do 前面加上 ";"。 如: for $var in ; do 。 下面是一个运用 for 进行循环的例子: #!/bin/bash for day in Sun Mon Tue Wed Thu Fri Sat do echo $day done # 如果列表被包含在一对双引号中,则被认为是一个元素 for day in "Sun Mon Tue Wed Thu Fri Sat" do echo $day done exit 0 注意上面的例子中,在 for 所在那行的变量 day 是没有加 "$" 符号的, 而在循环体内,echo 所在行变量 $day 是必须加上 "$" 符号的。 另外如果写成 for day 而没有后面的 in 部分, 则 day 将取遍命令行的所有参数。如这个程序: #!/bin/bash for param do echo $param done exit 0 上面这个程序将列出所有命令行参数。for

Shell高级编程学习笔记(基础篇)

孤街浪徒 提交于 2019-12-20 08:26:03
目录 1.shell脚本的执行方法    2.shell的变量类型    3.shell特殊变量 4.变量子串的常用操作    5.批量修改文件名实践    6.变量替换 7.在shell中计算字符串长度的方法   8.变量的数值计算:(()) 的用法 9. 变量的数值计算:let的用法     10.变量的数值计算:expr的用法 11.变量的数值计算:bc的用法    12.条件测试的多种方法 13.字符串测试操作符           14.整数二元比较操作符 15.逻辑操作符               16.利用shell知识制作单级及多级菜单 17.case结构条件语句         18. 当型循环和直到型循 环 19.for循环         待续。。。 1.shell脚本的执行方法 返回目录 当shell脚本以非交互的方式运行时,它会先查找环境变量ENV,该变量指定了一个环境文件(通常是.bashrc),然后从该环境变量文件开始执行,当读取了ENV文件后,SHELL才开始执行shell脚本中的内容。 shell脚本的执行通常可以采用以下三种方法: bash script-name 或者 sh script-name path/script-name 或者 ./script-name(当前路径下执行) source script-name 或 . script

shell基础

白昼怎懂夜的黑 提交于 2019-12-19 07:07:18
1、shell介绍   通常说的shell就是shell脚本,他是一门脚本语言,弱类型 2、shell规范   第一行内容为#!/bin/bash   #注释   文件以“.sh”结尾的文件 3、shell语法   变量       1、变量名=变量值(等于号两遍没有空格) a=xiaohuihui       2、变量名规范:不能以数字开头,字母、数字、下划线组成       3、输出变量内容 echo $变量名 echo $a       4、变量的释放 unset 变量名       5、特殊的变量,带有空格的变量定义                 双引号“” :如果变量值中存在$+变量名的话,输出变量名对应的变量值,想要原样输出的话,可以转义符\                 单引号‘’ :如果变量值中存在$+变量名的话,将原样输出                 反单引号`` :存放的是命令   通过键盘输入 read read 变量名       1、变量名可以有一个或者多个,变量名用空格隔开,变量值用空格隔开       2、如果变量值多余变量名,那么将会把多余的变量值给最后一个变量       3、可以添加提示信息:read - p“提示内容” 变量名      参数传递:向.sh文件传递数据        文件中接收参数的方式:$1---->表示第一个参数  

shell 编程入门

亡梦爱人 提交于 2019-12-19 05:39:04
shell 介绍 在计算机科学中,shell 是一个命令解释器, shell 脚本是 shell 编程的一种实现 shell 是位于操作系统和应用程序之间,是他们二者最主要的接口,shell 负责把应用程序的命令解释给操作系统,将操作系统处理后的结果解释给应用程序,所以,shell 相当于是应用程序与操作系统之间的媒介(翻译官的角色) linux 内一般是 bash,mac 是 zsh,然后还有 windows 的cmd,不过最近 windows 发布了完整内核的 linux 子系统 WSL 2 查看当前系统的 shell 类型:echo $SHELL shell 脚本 定义:可执行的 linux 命令不在命令行下执行,而是通过一个文件执行时,称这个文件是 shell 脚本 一般用 vim 直接打开文件即可创建一个脚本,例如 vim start_service.sh 表示创建一个开启服务的脚本,脚本的内容自然是各种可执行的命令 #!/bin/bash echo 'start service~' 注释:单行使用 #,多行注释有两种方法,分别是 :<<! ... ! 和 :<<字符 ... 字符 #!/bin/bash echo '1' :<<! echo '3' echo '4' ! echo '5' 脚本执行方式:   bash /path/test.sh     使用 bash

shell知识积累

核能气质少年 提交于 2019-12-18 15:22:38
教程: Shell脚本:Linux Shell脚本学习指南(超详细) Ubuntu下常用的快捷键 :https://blog.csdn.net/u010771356/article/details/53543041 变量名和等号之间不能有空格, 变量名 中间不能有空格,可以使用下划线 使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。 双引号的优点: 双引号里可以有变量 双引号里可以出现转义字符 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。 `命令` 等同于 $(命令) 原样输出字符串,不进行转义或取变量(用单引号) 例如:echo '$name\"' 输出结果:$name\" 显示命令执行结果 这里使用的是反引号 `, 而不是单引号 '。 例如:echo `date` 结果将显示当前日期 在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开 表达式和运算符之间要有空格 函数返回值在调用该函数后通过 $? 来获得。所有函数在使用前必须定义。 引用 http://www.runoob.com/linux/linux

linux定时执行shell脚本

こ雲淡風輕ζ 提交于 2019-12-17 16:44:44
在oracle 中可以利用dbms_job包定时执行pl/sql、sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成。 利用crontab来定时执行任务大致有如下三步: 1、编写shell脚本 2、利用crontab加入到定时任务队列 3、查看作业完成情况 一、如何建立shell脚本 Linux下有很多不同的shell,但我们通常使用bash(bourne again shell)进行编程,因为bash是免费的并且很容易使用 程序必须以下面的行开始(必须方在文件的第一行): #! /bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编辑好脚本时,要想执行脚本,必须使脚本可以执行 下面的命令,可以使脚本可以执行 chmod +x filename 然后可以输入./filename来执行脚本。 注:在shell编程时,#符号表示注释,只该行结束为止。在编写程序时,最好使用注释。 变量 shell下所有变量都以字符串表示,变量不需要声明,直接使用。直接对变量进行赋值 A="hello world" 取出变量用$符号,如: #! /bin/sh A="hello world" echo "A is:" echo $A 执行该脚本输出结果如下: A is : hello world shell

Linux——shell脚本编程

青春壹個敷衍的年華 提交于 2019-12-17 16:17:56
基本语法 书写+执行脚本 书写最简单的脚本:02.sh #! /bin/sh cd .. ls 执行脚本: chmod a+x 02.sh # 为02.sh添加执行功能 ./02.sh 或 bash 02.sh  # 以这种方式执行不需要02.sh文件具有可执行权限 Shell会fork一个子进程并调用exec执行./test.sh这个程序,exec系统调用应该把子进程的代码段替换成./02.sh程序的代码段,并从它的_start开始执行。然而test.sh是个文本文件,根本没有代码段和_start函数,怎么办呢?其实exec还有另外一种机制,如果要执行的是一个文本文件,并且第一行用Shebang指定了解释器,则用解释器程序的代码段替换当前进程,并且从解释器的_start开始执行,而这个文本文件被当作命令行参数传给解释器。因此,执行上述脚本相当于执行程序。 将命令行下输入的命令用()括号括起来,也会fork出一个子Shell执行小括号中的命令,一行中可以输入由分号;隔开的多个命令,比如: # (cd ..;ls -l) 如果想要在当前进程下执行shell文件,可使用source或.命令 # source ./02.sh# . ./02.sh 变量 按照惯例,Shell变量由全大写字母加下划线组成,有两种类型的Shell变量: 1.环境变量 env/printenv命令

shell函数和工具

假如想象 提交于 2019-12-17 00:47:33
1、读取控制台输入的参数 语法: read (参数) (参数) 参数 描述 -t 在规定的时间内(秒) -p 取值时的变量名 [root@tom shell]# read -t 10 -p "输入名字在10秒内" name 输入名字在10秒内tom [root@tom shell]# echo $name tom 2、函数 1.系统内置的函数 basename [string / pathname] [suffix] 功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。 suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。 [root@tom shell] # basename /root/shell/shell_arr.sh .sh shell_arr dirname 文件绝对路径 功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分) [root@tom shell] # dirname /root/shell/shell_arr.sh / root / shell 2.自定义函数 [root@tom shell] # vim shell_fun.sh #!/bin/bash :<< ! 自定义函数 ! function

subprocess以及常用的封装函数

北城余情 提交于 2019-12-16 10:34:56
从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system、os.spawn 、os.popen 、popen2. 、commands. 不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息 一、subprocess以及常用的封装函数 运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。 subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用。另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通信。 subprocess.call() 父进程等待子进程完成 返回退出信息(returncode,相当于Linux exit code) subprocess.check_call() 父进程等待子进程完成 返回0 检查退出信息,如果returncode不为0,则举出错误subprocess

shell脚本

倾然丶 夕夏残阳落幕 提交于 2019-12-16 03:09:27
上面我们了解了linux基本命令,现在开始学习shell脚本 首先,shell脚本文件后缀名为‘.sh’ 一、变量 变量分为全局环境变量和局部环境变量,系统有一些定义好的全局环境变量。 m_var=abc #这里定义一个局部变量名为m_var且值为abc,注意定义变量赋值时“=”两边不允许有空格 export m_var #使用export 将m_var局部变量编程全局变量 二、使用变量(引用变量) echo "$m_var" #输出abc,如果不使用'$',那么将输出m_var字符串 #当变量名与其他字符串连在一起时,可以按如下方法区分 echo "${m_var}bbbb" #输出abcbbbb,使用{}可以明确变量名的范围 三、命令替换 ``: m_var1=`pwd` #将命令pwd命令结果给变量m_var1 $():m_var2=$(pwd) #同上 四、表达式([[表达式]]、[表达式]、((表达式))) [表达式]:如, var1=$[1*3] #[]里的表达式很随意,没有对空格有约束[ 1* 3 ]也对。但是用到if-then的test判断里时,就不能随意了,如: if [ 1*3 ];then #[ 1*3 ]和[ 0 ]都是非0表达式 echo "1*3" fi #结果输出1*3,在[]用作if-then判断里时,'['后面必须跟一个空格,‘]’前面也必须跟空格