shell函数

Python17个常用内置模块总结

寵の児 提交于 2019-12-05 05:27:05
Python17个常用内置模块总结 1、getpass 2、os 3、sys 4、subprocess 5、hashlib 6、json 7、pickle 8、shutil 9、time 10、datetime 11、re 12、random 13、configparser 14、traceback 15、yaml 16、itertools 17、logging 1、getpass模块详解 pwd = getpass.getpass("请输入密码:") #输入密码不可见 yh = getpass.getuser() #显示当前登录系统用户名; 2、os模块 os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") #改变当前脚本工作目录;相当于shell下cd os.curdir #返回当前目录: ('.') os.pardir #获取当前目录的父目录字符串名:('..') os.makedirs('dirname1/dirname2') #可生成多层递归目录 os.removedirs('dirname1') #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') #生成单级目录;相当于shell中mkdir dirname os.rmdir('dirname'

linux shell awk 流程控制语句(if,for,while,do)详细介绍

≡放荡痞女 提交于 2019-12-05 02:40:14
  awk是gawk的链接文件,是一种优良的文本处理工具,实现格式化文本输出,是Linux和Unix现有环境中功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能取决于一个人拥有的知识量,使用"man gawk"给出的简述为“模式扫描和处理语言”。   任何awk语句都是由 模式和动作 组成,一个awk脚本可以有多个语句,模式决定动作语句的触发条件和触发时间。   模式包含:正则表达式,/[正则表达式]/;关系运算符,<、<=、>、>=、!=、==;正则运算符,~(匹配)、!~(不匹配);赋值运算符,=、+=、-=、*=、/=、%=、**=;逻辑运算符||、&&;算术运算符+、-、*、/、++、--;其他运算符,$(用来对字段进行引用),空格(字符串连接符)。   动作包含:变量、命令、内置函数、流程控制语句。   语法:awk [选项] ' BEGIN{开始语句} 模式{动作} END{结束语句} ' [文件]。其中 BEGIN和END 是awk的关键字, 必须大写。 不过开始模块和结束模块 是可选部分,可以省略 。并且 开始语句和结束语句也是动作语句 。另外, 工作模块中的 模式和动作可以都存在,也可以二者选其一 。 如果省略模式,那么文件的所有行都执行动作;如果省略动作,表示对符合条件的行执行默认的print动作 。正因为可以二者选其一,所以一般用{}包裹动作

shell脚本书写规范

时光总嘲笑我的痴心妄想 提交于 2019-12-05 02:31:29
N年后的第一更,这里主要记录一些平时自己不太注意的点 1. shell脚本开头要注明解释器,并且推荐下面这种方式: #!/usr/bin/env bash 2. 一行代码太长,需要用 “\” 进行分行,看起来更美观 ./configure \ -prefix=/usr \ -sbin-path=/usr/sbin/nginx \ -conf-path=/etc/nginx/nginx.conf 3. 在脚本中获取外部命令返回值的正确方式: Num=$(wc -l FileName.txt|awk '{print $1}') 4. 在定义函数时,最好对函数的输入输出类型做注释 [] <- () # 输入空,输出空 [String] <- (var1: String, var2: String) # 输入两个字符型变量,输出字符型 [Boolean] <- (var1: String, var2: Int) # 输入字符型变量1,整型变量2,输出布尔值 [] <- (var1: String)例如:#[string] <- (string)Test(){  Name=$1  echo "Hello! My Name is:" ${Name}} 5. 一般用于外部调用的函数,用function定义;如果仅脚本内部使用,建议不加function关键词 # 通常情况下用于外部调用

shell 函数返回字符串的方法

爷,独闯天下 提交于 2019-12-05 02:05:38
shell的函数只能返回整数值,如果想让函数返回字符串可以在函数调用处为变量赋值。 # 定义函数function test() { name=$1 echo "123213" } # 调用函数,执行结果赋值给变量ret ret=$(test "lishichao") echo $ret # 执行结果 [root@dev-test shell]# sh test.sh 123213 来源: https://www.cnblogs.com/root0/p/11896818.html

shell脚本编程

不想你离开。 提交于 2019-12-04 21:59:06
Shell脚本编程 Shell是操作系统的最外层,是用户与Linux操作系统沟通的桥梁,用户输入命令,shell负责翻译成Linux内核可以理解的语言,也就是说shell是用户和操作系统之间的一个命令解释器,用户通过shell使用Linux。 shell也支持编程,主要用来开发实用的自动化的小工具,比如日志分析和检测计算机硬件参数。Shell是一种脚本语言,编写完源码以后不需要编译,直接运行源码就可以了,因为它边执行边翻译,所以使用灵活便捷,非常适合小工具的制作以及web开发。 Shell的类型非常多,常见的类型有: Bourne shell(/usr/bin/sh或/bin/sh); Bourne again shell(/bin/bash); C shell(/usr/bin/csh); K shell(/usr/bin/ksh); Shell for root(/sbin/sh)。 接下来主要介绍shell脚本编程。 Shell脚本编程注意事项 Shell脚本命名名称一般使用英文字母,可包含下划线,不能使用空格; Shell脚本变量名称以字母或下划线“_”开头; Shell脚本后缀以.sh结尾; Shell脚本内容首行需以#!/bin/bash(固定格式,定义该脚本使用的shell类型)开头。 shell变量 shell在使用变量时不需要事先声明变量,shell给一个变量赋值

awk基本用法

我的未来我决定 提交于 2019-12-04 21:13:00
awk 是一种编程语言,用于在 linux/unix 下对文本和数据进行处理。 awk 数据可以来自标准输入、一个或多个文件,或其它命令的输出。 awk 通常是配合脚本进行使用, 是一个强大的文本处理工具。 awk基本知识 awk内部变量 awk模式动作 awk条件判断 awk循环语句 awk数组 toc awk基本知识 awk 的两种形式语法格式 awk [options] 'commands' filenames awk [options] -f awk-script-file filenames options -F 定义输入字段分隔符,默认的分隔符是空格或tab键(就是改变内部变量 FS,FS 来确定字段分隔符) OFS 是另一个内部变量,用来定义输出字段分隔符的。比如 $1,$3 之间有个逗号,之后输出内容之间变为空格,是因为 OFS 默认为空格 command BEGIN{} {} END{} 行处理前 行处理 行处理后 awk命令格式 ## awk 匹配文件带root的行 [root@Shell ~]# awk '/root/' /etc/passwd ## awk 对文件行进行动作处理(以冒号为字段分隔符,打印第一个字段) [root@Shell ~]# awk -F: '{print $1}' /etc/passwd ## awk 匹配文件 + 处理动作

Shell函数

允我心安 提交于 2019-12-04 21:12:34
函数的作用 命令合集,完成特定功能的代码块 函数必须先定义才可以使用,如果定义不调用则不被执行 使代码模块化,避免重复代码,加强可读性,便于复用 函数基本用法 函数传参 toc 函数基本用法 定义函数三种写法 ## 方法一 函数名() { 函数要实现的功能代码 } ## 方法二 function 函数名 { 函数要实现的功能代码 ## 方法三 function 函数名() { 函数要实现的功能代码 } 基本语法 [root@Shell ~]# vim test.sh #!/bin/bash ## 定义函数 function mantou () { echo "吃馒头!" } function miantiao () { echo "吃面条!" } ## 调用函数(不调用不会执行) mantou [root@Shell ~]# source test.sh 吃馒头 定义错误数值 [root@Shell ~]# vim return.sh #!/bin/bash funreturn() { read -p "enter num: " num return $[2*$num] } funreturn [root@Shell ~]# source return.sh 2 ; echo $? 4 函数传参 位置传参 #!/bin/bash ## 位置变量不是3个就退出 if [ $# -ne

Shell脚本基础知识

筅森魡賤 提交于 2019-12-04 21:10:27
Shell 脚本是系统命令的堆积,用于简化操作步骤,提高效率,减少人为干预,减少系统故障。在学习 Shell 之前必须会熟练的手动运用系统命令,不会手动搭建或者执行某些程序,那么一定学不会 Shell Shell常用字符 Shell脚本变量 变量常见类型 变量赋值方式 变量数值运算 变量删除替换 toc 脚本的基本格式和执行方式 ## 基本格式 [root@Shell ~]# vim test.sh #!/bin/bash echo "Hello world" ## 运行脚本 [root@Shell ~]# chmod +x test.sh [root@Shell ~]# ./test.sh Hello world Shell常用字符 命令排序 ; 没有逻辑关系,无论分号前面的命令执行是否成功都执行后者命令 && 前面执行成功, 则执行后者 || 前面执行不成功, 则执行后者 shell 通配符 匹配任意多个字符 ? 匹配任意一个字符 [] 匹配括号中任意一个字符和一定范围的字符,比如a-z,0-9,A-Z,a-Z () 会在子 shell 中执行 {} 按顺序逐个匹配,比如 touch file{1..9} \ 转义符 echo输出颜色、printf 格式化输出文本 echo -e "\033[30m 黑色字 \033[0m" echo -e "\033[31m 红色字 \033

[转载]shell 数组定义遍历

跟風遠走 提交于 2019-12-04 20:29:15
转自:https://www.coder4.com/archives/3853Shell编程中的数组定义、遍历 4 Replies 数组定义: arr=(1 2 3 4 5) # 注意是用空格分开,不是逗号!! 数组定义法2: array array[0]="a" array[1]="b" array[2]="c" 获取数组的length(数组中有几个元素): ${#array[@]} 遍历(For循环法): for var in ${ arr[@] }; do echo $var done 遍历(带数组下标): for i in "${!arr[@]}"; do printf "%s\t%s\n" "$i" "${arr[$i]}" done 遍历(While循环法): i=0 while [ $i -lt ${ #array[@] } ] do echo ${ array[$i] } let i++ done 遍历(for循环次数) for i in {1..5} do echo "Welcome $i times" done 向函数传递数组: 由于Shell对数组的支持并不号,所以这是一个比较麻烦的问题。 翻看了很多StackOverFlow的帖子,除了全局变量外,无完美解法。 这里提供一个变通的思路,我们可以在调用函数前,将数组转化为字符串。 在函数中,读取字符串

深入浅出Windows BATCH

此生再无相见时 提交于 2019-12-04 19:32:33
1.什么是Windows BATCH BATCH也就是批处理文件,有时简称为BAT,是Windows平台上的一种可执行脚本,与*nix(Linux和Unix)上的Shell脚本和其他的脚本(Perl,Python)等是一样的,实质上就是一个文本文件,但是用特定的软件去解释的时候,就变成了可执行脚本。在Windows上,可执行脚本就是BATCH文件,也叫批处理文件,这是从DOS时代遗留下来的名字,意思就是把很多命令放到一起来执行。它的扩展名是*.bat,双击便可直接运行,在命令行(CMD或叫做命令提示符)下面也可以当作一个命令来运行。因为这是Windows支持的东西,所以只能在Windows平台使用。(特殊情况除外,不要钻牛角尖,没意思的)。比如著名的Windows垃圾清理小工具就是一个BAT批处理文件。 2. 为什么需要BAT 归根结底是为了提高工作效率。这个解释起来比较费劲,因为在GUI大行其道的今天,再提命令行,很多人会不熟悉,或者认为这是倒退。但是众多关于提高工作效率的书籍都会提到命令行可以大大的提高效率,因为命令可以方便的直接写路径,而不用在文件浏览器中一层一层的打开,和命令行可以把命令组合起来,也就是把不同的命令组合起来来完成一个任务,而不用打开多个GUI窗口来做(甚至很多时候GUI窗口都是无法完成的)。对于这点*nix的程序猿们应该最有体会,真正的