shell编程

shell基础之变量及表达式

柔情痞子 提交于 2020-01-22 01:49:32
本节内容 1. shell 变量简介 2. 定义变量 3. 使用变量 4. 修改变量的值 5. 单引号和双引号的区别 6. 将命令的结果赋值给变量 7. 删除变量 8. 变量类型 9. 特殊变量列表 10. 退出状态 11. shell 表达式与运算符 11.1 条件表达式 11.2 整数比较符 11.3 字符串比较符 11.4 文件测试 11.5 布尔运算符 11.6 逻辑判断符 11.7 整数运算 11.8 其他运算工具 11.9 shell 括号用途总结 一、 shell 变量简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以, Shell 变量也遵循这个规则。 在 Bash shell 中,每一个变量的值都是字符串, 无论你给变量赋值时有没有使用引号,值都会以 字符串 的形式存储 。这意味着, Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。 二、定义变量 Shell 支持以下三种定义变量的方式: variable= value variable= 'value' variable= "value" variable 是变量名, value 是赋给变量的值。如果 value 不包含任何空白符(例如空格、 Tab

shell编程之变量赋值

*爱你&永不变心* 提交于 2020-01-22 00:52:24
1.变量赋值: name=lbg 等号前后不能有空格 name="Lebron James" 变量值中有空格要用双引号 echo ${name} 用${}更保险 shopt -s -o nounset 设置“先声明再使用” 2.取消变量: unset 释放变量和函数的内存 3.位置参数: ${n}:输入的第n个参数($0表示脚本名字) $#:输入参数的数量 $@:输入的所有参数 $!:输入的最后一个参数 $?:上一个命令的返回值(用于在脚本中判断之前命令的执行状态,任何非0的返回都表示非正常执行) 4.数组: declare -a Array=('ladawn' 'lbg' 'lbj') 5.只读变量: declare -r N=10 readonly N=10 6.函数中的变量: 若不声明local,则函数中的变量也为全局变量。 若声明为local(local var=200),则变量的作用域只在函数内。 7.引用: 双引号:弱引用,特殊符号($、\、`)仍然解析为特殊的意义。 单引号:强引用,所有的字符都是字面意思,不再有特殊意义。 8.命令替换: A=$(data)或者A=`data`,表示将data命令的输出结果取出,赋给A 9.bc运算: 用于浮点数计算输出。通过管道使用。 tatal=$(echo "34/15" | bc) 9.数值运算: let "sum+=1"

Linux shell编程学习笔记(一)

て烟熏妆下的殇ゞ 提交于 2020-01-21 04:57:27
Linux shell编程笔记 一:脚本开头固定格式: #!/bin/bash 申明这是一个shell脚本文件 二:脚本保存后缀为 .sh ;运行.sh的方式有两种: (1)./接文件名.sh的方式运行 (2)/bin/sh ./文件名.sh 区别:第一种直接以点斜杠运行的方式,有时候需要先赋予文件可执行权限,第二种方式则可以直接运行,不需要赋予执行权限 三:shell脚本 (1)变量定义:直接A=123或者FILE=“D:/xuexi/” 即可 (2)变量的引用:$A或者$FILE 注意$与变量名之间不能有空格;$不仅可以引用变量,也可以直接引用其他命令的执行结果,然后赋值给其他变量 如:USER=$(cat /root/users.txt) (3)系统常用的一些变量引用: $# 是传给脚本的参数个数 $0 是脚本本身的文件名 $1 是脚本后接的第一个参数 $2 是脚本后接的第二个参数 $@ 是传给脚本的所有参数列表,"$1" "$2" "$3" … "$n" $* 是以一个单字符串显示传给脚本的所有参数,"$1 $2 $3 … $n" $$ 是脚本运行的当前进程ID号 $? 是最后运行命令的结束状态码,0表示没有错误,其他表示有错误 (4)Linux中没有单引号 表示字符或者字符串需要用双引号引起来; 注意单引号与反引号的区别:反引号是键盘上Esc键下的那个键,与单引号是不同的

shell脚本结构化之循环命令

寵の児 提交于 2020-01-20 19:59:52
循环是编程的一个重要部分,bash shell提供了三种可用于脚本中的循坏命令 for 命令 while命令 until 命令 这些都没有好讲的,注意下格式就行了,看两个实例 查找可以执行的文件 #!/bin/bash IFS = : for folder in $PATH do echo " $folder :" for file in $folder /* do if [ -x $file ] then echo " $file " fi done done 创建多个用户账号 #!/bin/bash input = "users.csv" while IFS = ',' read -r userid name do echo "添加用户 $userid " useradd -c " $name " -m $userid done < " $input " 来源: CSDN 作者: weixin_46025444 链接: https://blog.csdn.net/weixin_46025444/article/details/104050657

shell基础使用

社会主义新天地 提交于 2020-01-18 12:31:15
2、shell 2.1、shell基础正则表达式 ​ 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。并规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式( Regular Expression ) 。 2.1.1、普通元字符 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“ n ”匹配字符“ n ”。“ \n ”匹配一个换行符。串行“ \\ ”匹配“ \ ”而“ \( ”则匹配“ ( ”。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“ \n ”或“ \r ”之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“ \n ”或“ \r ”之前的位置。 * 匹配前面的子表达式零次或多次。例如,zo 能匹配“ z ”以及“ zoo ”。 等价于{0,}。 + 匹配前面的子表达式一次或多次。例如,“ zo+ ”能匹配“ zo ”以及“ zoo ”,但不能匹配“ z ”。+等价于{1,}。 ? 匹配前面的子表达式零次或一次。例如,“ do(es)?

第三部分shell编程3(shell脚本2)

為{幸葍}努か 提交于 2020-01-17 08:48:08
7. if 判断一些特殊用法 if [ -z $a ] 这个表示当变量a的值为空时会怎么样 if grep -q '123' 1.txt; then 表示如果1.txt中含有'123'的行时会怎么样 if [ ! -e file ]; then 表示文件不存在时会怎么样 if (($a<1)); then …等同于 if [ $a -lt 1 ]; then… [ ] 中不能使用<,>,==,!=,>=,<=这样的符号 if [ ! $a -gt 0 ];then... 代表不大于0 if [ -z $n1 ] 为空 if [ -n $n1 ] 不为空 if [ ! -z $n1 ] 8. shell中的case判断 格式: case 变量名 in value1) command ;; value2) command ;; *) commond ;; esac 求余!! vim case.sh !# /bin/bash n1=`echo $1 |sed 's/[0-9]//g'` if [ -z $n1 ]; then m=$[$1%2] case $m in 1) echo "the number is odd" ;; 0) echo "the number is even" ;; *) echo "is other" ;; esac else echo "the

两个有用的shell工具总结

六眼飞鱼酱① 提交于 2020-01-17 07:11:24
shell工具之一:sed sed基础 sed编辑器被称作流编辑器,与常见的交互式文本编辑器刚好相反。文本编辑器可以通过键盘来交互式地插入、删除、替换文本中的数据;而流编辑器是基于一组预先的规则来编辑数据流。 sed命令的格式如下: sed options script file 选项 说明 -e script 将script中指定的命令添加到运行的命令中 -f file 将file中指定的命令添加到运行的命令中 -n 不为每个命令生成输出,等待print命令来输出 说明: script用于指定作用在数据量上的单个命令。 如果需要使用多个命令,有 两种选择 :可以在命令行中使用-e选项指定,不同命令之间用分号隔开;或者使用-f选项在文件中指定。 默认情况下,sed编辑器将指定的命令应用到STDIN输入流上,而不作用于数据源本身,就是说sed不会修改文本文件中的原数据。 1 替换命令substitute s/pattern/replacement/flags flags 取值如下: 数字: 表示replacement将替换 每行中 第几次出现的pattern g : 表示replacement将替换所有出现的pattern p : 打印用replacement替换过的行(经常与-n选项搭配使用,-n禁止sed输出,而p会输出修改过的行

06-Linux常用命令

徘徊边缘 提交于 2020-01-17 07:02:44
文章目录 Linux常用命令 Shell概述 交互式处理 基本命令 如何取得帮助 操作目录 了解Linux目录 改变目录 建立或移除目录 操作文件 列举文件 列举所有文件(包含隐藏文件) 查找文件 查看文件 搜索ASCII文件 管道符(|) 拷贝文件 移动和重命名文件 移除文件 归档和压缩 归档 压缩 归档文件压缩 系统命令 输入/输出重定向 查看ip 重启系统 关闭系统 其他技巧 操作shell历史 tab补全 命令行编辑 长命令输入 Linux常用命令 Shell概述 shell是用户和操作系统之间的一个接口。用户在命令提示符下输入的每个命令都首先由shell程序进行解释,然后再传给Linux内核的。shell是一个命令解释器。它拥有自己内建的shell命令集,可以用它来启动、挂起、停止一些程序。此外shell也能被系统中的其他有效的Linux应用程序所调用。 shell还是一个解释型的程序设计语言。shell程序设计语言支持绝大多数高级程序设计语言中常用的元素,比如函数、变量、数组和控制结构。shell编程简单易学,在任何命令提示符中能键入的命令都可以在shell程序中使用。而且一旦掌握,它将成为工作中的得力工具。 和DOS和Windows不同,Linux提供了多种shell程序供用户选择使用,使用不同类型shell的原因是它们都有各自的特点

[shell编程]初识sed和gawk

我怕爱的太早我们不能终老 提交于 2020-01-17 07:01:53
一.sed编辑器 shell脚本最常见的用途就是处理文本文件,sed和gawk能够极大的简化需要进行的数据处理任务。 sed编辑器是流编辑器,跟普通交互式文本编辑器(如vim)不同。流编辑器在编辑器处理数据前基于预先提供的一组规则来编辑数据流。由于命令都是一行一行顺序处理,sed编辑器必须一次就完成对文本的修改,所以比交互式编辑器速度快很多。 使用sed命令的格式:$ sed optioons script file 1.替换标记 s命令帮助我们用斜线间制定的第二个文本字符串代替地一个文本字符串,举一个简单的例子: # echo This is a dog | sed 's/dog/big dog/' This is a big dog 在sed命令行上执行多个命令时,用-e选项: # echo This is a white dog | sed -e 's/white/black/; s/dog/cat/' This is a black cat 如果有大量sed命令,可以放入一个文件内,用-f选项制定文件,此时不需要用分号: $ cat script s/white/black s/dog/cat 2.使用地址 默认情况下,sed编辑器中使用的命令会作用与文本数据的所有行。如果只想将命令作用于特定某行或者某些行,需要用 行寻址 。 sed有两种行寻址:行的数字范围

Linux学习——shell编程

旧城冷巷雨未停 提交于 2020-01-17 06:54:20
LINUX-----shell编程(脚本shell) Shell的种类 1.sh 2.ksh 3.bash 4.C shell(包括csh and tcsh) 5.tcsh shell的概念 shell提供了你与操作系统之间的通讯方式,这种通讯方式可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,他们可以被重复使用。 本质上,shell script是命令行命令简单的组合到一个文件里面 程序基础 程序必须以下面的行开始(必须放在一个文件的第一行): #!/bin/sh #!用来告诉系统他后面的参数是用来执行该文件的程序 要使脚本可以执行: chmod +x filename 然后,您可以通过输入: ./filename 来执行您的脚本文件 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。建议在程序中使用注释,那么即使相当长的时间没有使用该脚本,您也可以在很短的时间内明白该脚本的作用及工作原理。 变量 在其他编程语言中必须使用变量。在shell编程中,所有的变量都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量,可以这样写: 变量名=值 取出变量值可以加一个美元符号(¥)(实际是shift+4)在变量前面 变量赋值时,“=”两边都不能有空格