Shell编程

创建sh文件

touch test.sh
vim test.sh 写入如下内容
#!/bin/bash
a="hello" 运行
chmod +x /root/test.sh
. ./test.sh
echo $a 可以运行unset撤销变量 export可以设置全局变量

系统变量

set 查看系统变量

常见的系统变量
echo $HOME /root
echo $PWD /root
echo $SHELL /bin/bash
echo $USER root 其他常用变量
echo $? 返回上一条语句的返回值,0表示执行成功
echo $$ 当前进程号
echo $0 当前脚本名
echo $n 获取运行脚本传递的第n个参数
echo $# 传递参数的个数
echo $* 表示参数列表,如果使用引号包裹输出整体
echo $@ 表示参数列表,如果使用引号包裹输出还是列表 for item in $@
do
echo $item
done ./test.sh 1 2 3 4 5

单引号和双引号的区别

echo "Hi, $a"                   Hi, hello
echo 'Hi, $a' Hi, $a

算术表达式

res=`expr 1 + 2`

循环

for循环
for item in 1 2 3
do
echo $item
done while循环
item=1
while((item<=3))
do
echo $item
let item++
done case语句
case $1 in
a)
echo "aaa"
;;
b)
echo "bbb"
;;
*)
echo "(a|b)"
esac
运行./test.sh a 输出 aaa

read

read -p "input a number" num
echo $num

if

if [ $1=a ]
then
echo "aaa"
elif [ $1=b ]
then
echo "bbb"
else
echo "--------"
fi 数值条件判断
= 等于
-lt 小于
-le 小于等于
-ep 等于
-gt 大于
-ge 大于等于
-ne 不等于 文件条件判断
-f test.sh 判断文件是否存在
其他的判断符
-r 是否读权限
-w 是否写权限
-x 是否执行权限
-f 是否存在
-s 是否存在且不为空
-d 是否存在并且是目录

函数

function fn()
{
echo $1, $2;
return $(($1+$2));
} fn 1 2;
echo $?;

cut

文本分割操作

a='a|a|c|d'
echo $a | cut -d '|' -f 2 输出结果 b

sort

排序操作

echo $a | sort -t '|' -k 2                      按照第2列字符串排序
echo $a | sort -t '|' -k 2 -u 按照第2列字符串排序,去重
echo $a | sort -t '|' -k 2n 按照第2列数字排序
echo $a | sort -t '|' -k 2nr 按照第2列数字倒序排序 cat file | sort | uniq

sed

sed -i '1d' file                                删除文件的第一行
sed -i '1,$d' file 删除文件的所有行
sed -i '$d' file 删除文件的最后一行
sed -i '/aaa/'d file 删除文件中包含aaa的行
sed -i 's/aaa/bbb/g' file 将所有的aaa替换成bbb

awk

echo $a | awk -F "|" '{print $1}'               输出分割的第一列

Shell编程的基本语法的更多相关文章

  1. Linux Shell编程 条件判断语法

    if条件判断语句 单分支 if 条件语句 语法格式: if [条件判断式];then 程序 fi 或者 if [条件判断式] then 程序 fi 在使用单分支 if 条件查询时需要注意几点: if ...

  2. linux —— shell 编程(编程语法)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 再识变量 函数 条件语句 循环语句 ...

  3. shell编程基础(二): shell脚本语法之分支语句和循环语句

    一.分支语句 1.条件测试:test [ 命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与 ...

  4. 【shell编程】之基础知识-语法

    一.shell变量 1.定义变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要), 如: your_name="runoob.com" 注意,变量名和等号之间不能有空格 ...

  5. 【Shell编程】Shell基本语法

    Shell 语法   Shell程序设计作为一种脚本语言,在Linux系统中有广泛的应用,本文记录了关于Shell程序设计的基础语法知识和常用命令,方便查询,熟练使用shell也需要经常实践,这对于完 ...

  6. linux shell 基本语法之快速上手shell编程

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  7. shell编程--基本格式,基本语法,运算符,expr,(()),$[]

    02/shell编程 Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell Shell也是一门编程语言."."号执行脚本时,会让脚本在调用者 ...

  8. shell编程基础语法

    创建文件:touch aaa.sh 把文件变成可执行的命令: chmod +x /Users/dream-mac/Desktop/aaa.sh (这里是文件路径,如果在当前路径下,只需要把文件名写到这 ...

  9. Linux Shell编程入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

随机推荐

  1. 三十四 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解

    信号一般使用信号分发器dispatcher.connect(),来设置信号,和信号触发函数,当捕获到信号时执行一个函数 dispatcher.connect()信号分发器,第一个参数信号触发函数,第二 ...

  2. hdu 5974 A Simple Math Problem

    A Simple Math Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot ...

  3. C#—序列化(Serialize)和反序列化(NonSerialize)

    (转自:http://www.cnblogs.com/Abel-Zhang/p/Serialize.html) 一.概述 序列化是把对象转变成流.相反的过程就是反序列化. 哪些场合用到这项技术呢? 1 ...

  4. [C#] Newtonsoft.Json 版本冲突

    在web.config或者app.config里面加上一段: <runtime> <assemblyBinding xmlns="urn:schemas-microsoft ...

  5. Golang使用MongoDB通用操作

    MongoDB是Nosql中常用的一种数据库,今天笔者就简单总结一下Golang如何使用这些通用的供能的,不喜勿喷... 研究的事例结构如下: type LikeBest struct { Autho ...

  6. gcc编译 汇编 选项

    gcc生成main.out的步骤分解:<blockquote>main.c-----(-S 编译)-------->main.s-------(-c 汇编)------->ma ...

  7. 如何手玩5h uoj215 果冻运输得到 AC

    最近在大力练习提答颓提答,听说果冻运输很好玩就来试试. 然后玩的停不下来 QAQ ... 于是开一篇博客写一下每个点的解法.(一个个手玩出来的..) 首先我们每次都算什么下一步完后会发生什么在大脑中演 ...

  8. 配置linux下面python的开发环境

    1.首先安装Python开发环境 http://blog.csdn.net/testcs_dn/article/details/51253365 2.安装django开发环境 http://blog. ...

  9. spring--Autowired setter 方法

    在Spring中,可以使用 @Autowired 注解通过setter方法,构造函数或字段自动装配Bean.此外,它可以在一个特定的bean属性自动装配. 注 @Autowired注解是通过匹配数据类 ...

  10. Oracle备份与恢复案例

    注:以下内容来自<Oracle备份与恢复案例.doc>文档. Oracle备份与恢复案例 By Piner 一. 理解什么是数据库恢复 当我们使用一个数据库时,总希望数据库的内容是可靠的. ...