Linux_Bash脚本基础
目录
Bash使用基础
1. 显示脚本的执行的详细步骤:
sh -x shellScript.sh
2. 判断一条指令是否执行成功
netstat -lpntu | grep 80
echo $?
#If output=0 --> 执行指令成功
#If output=1 --> 执行指令不成功
if 语句
格式:
if [ Param1 逻辑运算符 Param2 ]
then
commands1
elif
commmands2
else
commands3
fi
Example:
############################ 判断服务启动状态
service httpd start &> /dev/null
service httpd status &> /dev/null
if [ $? -eq 0 ]
then
echo "start httpd successfully!"
else
echo "start httpd faild!"
fi
############################# SCRIPT END
运算符
$:Shell 中的特殊变量
a. $0 --> 表示Shell或Shell Script的名字
b. $* --> 以一对双引号给出参数列表
c. $@ --> 将各个参数分别加双引号返回
d. $# --> 表示参数的个数
e. $! --> 代表最后执行的后台指令的PID
f. $$ --> 代表所有指令的PID
g. $_ --> 表示上一个命令的最后的一个参数
h. $? --> 代表上一个指令执行后的退出状态
i. $Number --> 代表脚本名后跟这第Number个参数
'' 和 "": 单双引号表示字符
``: 撇号表示执行``中的指令后返回的结果,并且以列表的形式存放,可以结合for循环语句,将指令执行的结果作为循环的条件
逻辑表达式
-gt --> > greater than 大于
-ge --> >= greater equal 大于等于
-lt --> < less than 小于
-le --> <= less equal 小于等于
-eq --> = 等于
-ne --> != not equal 不等于
-z --> null 为空
-f --> 判断是否存在
Example:
判断是否存在D/N.tar.$H文件 –> 判断是否存在 -f
if [-f $D/$N.tar.$H]
不将执行指令的结果显示出来
Commands &> /dev/null
Example:
service httpd start &> /dev/null
echo 语句
不换行显示:
echo -n
echo -n "HI Jmilk!" ; echo "How are you?"
获取变量内的体积
echo ${#names}
从Bash接受输入参数
########################## 从Bash接受一个参数,再返回一个输出
read -p "Ple input the parameter !" param
echo -n "Parameter is "
echo $param
########################## SCRIPT END
Case语句
一般用于程序启动脚本
Syntax:
case $1 in
Param1)
Commands
;;
Param2)
Commands
;;
*)
Commands
esac
Example:
#!/bin/bash -e
#/bin/bash -e 表示系统发生第一个错误时就中止脚本执行
#每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。
# chkconfig:35 12 45
#第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 – 代替运行级。
# description:Service start script
#第二行对服务进行描述,可以用\ 跨行注释。
RETVAL=0
case $1 in
start)
echo "service starting..."
;;
stop)
echo "service stopping..."
;;
restart)
#$0 meating is this one script
sh $0 stop || true
# $0 stop || ture 表示出现错误时候不想中止的指令
sh $0 start
;;
*)
echo "input syntax error!"
echo "Usage:Is [start|stop|restart]"
exit 1
;;
esac
echo $RETVAL
###################################SCRIPT END
循环
for 语句
格式1:
for VariableName in Parameter1 Param2 Param3
do
commands
done
格式2:
for ((初始值;限制值;执行步进))
do
commands
done
Example:
#################################### 批量创建用户
#!/bin/bash
n=`cat /root/userList.txt`
#``内的指令结果赋值给vairable n
for name in $n
do
useradd $name
echo 123 | passwd --stdin $name
done
###################################### SCRIPT END
While语句
格式:
while 条件
do
commands
done
Example:
##################################### 猜价格脚本
#!/bin/bash
num=`echo $((RANDOM%1000+1))`
echo "Welcome use!"
while true
do
read -p "input a number(1-1000)" n
let t++
if [ $n -eq $num ]
then echo "Right!The price is {num}}"
echo "You make a guess at ${t}"
break
elif [ $n -gt $num ]
then echo "greater then"
else
echo "less then"
fi
done
###################################### SCRIIPT END
内置变量和函数
a. 获取随机数 RANDOM:
echo $RANDOM
echo $((RANDOM%100+1)) #生成1-1000的随机数
b. 判断是否为整型:
num.isdigit(variableName)
c. 定义列表
list=[vairabe1,variable2
d. 为列表添加元素
list.append('%s' % variableName)
e. 从列表中删除一个数
listTableName.remove('%s' % variable)
f. 从列表中随机选取一个数
c=random.choice(listTableName)
g. 判断一个元素是否在列表中
if 'variabeName' in list listTableName
AWK Command
awk 就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
工作原理:读入并分割有’\n’换行符的的一天记录,再将这条记录以(-F ” “)指定的特定分割符来划分出域,填充域,最后使用Number 来选择显示第几个域并{printNumber} 显示。没有-F指定特定分隔符时,默认分隔符为”空白键” 或 “[tab]键”。
grep ^user /etc/passwd | awk -F : '{print $1}'| grep -v ^root
Linux_Bash脚本基础的更多相关文章
- 从游戏脚本语言说起,剖析Mono所搭建的脚本基础
0x00 前言 在日常的工作中,我偶尔能遇到这样的问题:“为何游戏脚本在现在的游戏开发中变得不可或缺?”.那么这周我就写篇文章从游戏脚本聊起,分析一下游戏脚本因何出现,而mono又能提供怎样的脚本基础 ...
- 详细介绍Linux shell脚本基础学习
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...
- bat脚本基础教程
bat脚本就是DOS批处理脚本,就是将一系列DOS命令按照一定顺序排列而形成的集合,运行在windows命令行环境上.本文主要介绍bat脚本基础语法,希望完成本文内容学习之后具备基础的bat脚本开发能 ...
- bash shell笔记1 脚本基础知识
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/505644 * ...
- 《UNIX-Shell编程24学时教程》读书笔记Chap1,2 Shell基础,脚本基础
Chap1 Shell基础 知道该使用哪种命令是依赖于经验的.----惟手熟尔. 1.1 什么是命令 其实知道这些名词好像也没什么帮助,嘻嘻 1.2 什么是Shell 不同用户不同的提示符:不同的环境 ...
- shell脚本-基础
shell脚本-基础 编程基础 程序是指令+ 数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell 程序提供了编程能力,解释执行. 计算运行二进 ...
- 【在 Nervos CKB 上做开发】Nervos CKB脚本编程简介[2]:脚本基础
CKB脚本编程简介[2]:脚本基础 原文作者:Xuejie 原文链接:Introduction to CKB Script Programming 2: Script 本文译者:Shooter,Jas ...
- Bash脚本编程之脚本基础和bash配置文件
脚本基础 参考资料:Shell Scripts (Bash Reference Manual) 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成 ...
- 【Gradle】Gradle构建脚本基础
Gradle构建脚本基础 Settings文件 在Gradle中,定义了一个设置文件,用于初始化以及工程树的配置.设置文件的默认名为settings.gradle,放在根工程目录下. 设置文件大多数的 ...
随机推荐
- cJSON使用笔记
将cJSON用到STM32f103上 cJSON内存管理使用的是标准库stdlib.h的malloc()free()realloc()动态内存管理函数,我STM32F103使用的是正点原子的mallo ...
- java_第一年_JDBC(6)
DataBaseMetaData对象:由Connection.getDataBaseMetaData()方法获得,可以用来获取数据库的元数据,提供的方法有: getURL():返回一个String类, ...
- 浅谈格雷码(Grey Code)在信息学竞赛中的应用
1.格雷码的概念 1.性质 格雷码(Grey Code),又叫循环二进制码或反射二进制码,是一种编码方式,它的基本特点是任意两个相邻的格雷码只有一位二进制数不同. 常用的二进制数与格雷码间的转换关系如 ...
- HNUSTOJ-1600 BCD时钟
1600: BCD时钟 时间限制: 1 Sec 内存限制: 128 MB提交: 1038 解决: 156[提交][状态][讨论版] 题目描述 BCD码是指用四位二进制数来表示十进制数中的0~9这十 ...
- 第7章 PTA查找练习题
这道题与第7章查找有关,当时提前看到,翻到书里面的算法,然后打进去,虽然是正确的,但是那时候并不知道二叉排序树的基础知识,包括插入查找的来龙去脉,现在已经学到了,有了一定了解,发现题目只用到了其中部分 ...
- k3 cloud成本调整单
做了成本调整单中的入库调整单或者出库调整单,进行入库成本核算和出库成本核算,做了入库调整单后在存货收发汇总表(按日期报表)中的收入部分会展示出来: 如果做的是期末余额成本调整,核算时会先删除手工新增的 ...
- TensorFlow学习笔记1:graph、session和op
graph即tf.Graph(),session即tf.Session(),很多人经常将两者混淆,其实二者完全不是同一个东西. graph定义了计算方式,是一些加减乘除等运算的组合,类似于一个函数.它 ...
- 基于TMS320C6678、FPGA XC5VLX110T的6U CPCI 8路光纤信号处理卡
基于TMS320C6678.FPGA XC5VLX110T的6U CPCI 8路光纤信号处理卡 1.板卡概述 本板卡由我公司自主研发,基于CPCI架构,符合CPCI2.0标准,采用两片TI DSP T ...
- javaweb各种框架组合案例(七):springboot+jdbcTemplete+通用dao+restful
一.介绍 1.springboot是spring项目的总结+整合 当我们搭smm,ssh,ssjdbc等组合框架时,各种配置不胜其烦,不仅是配置问题,在添加各种依赖时也是让人头疼,关键有些jar包之间 ...
- spark与Hadoop的区别
1. Mapreduce和Spark的相同和区别 两者都是用mr模型来进行并行计算 hadoop的一个作业:job job分为map task和reduce task,每个task都是在自己的进程中运 ...