Linux_Bash脚本基础

举报
云物互联 发表于 2021/08/05 23:51:46 2021/08/05
【摘要】 目录 目录Bash使用基础if 语句运算符逻辑表达式不将执行指令的结果显示出来echo 语句从Bash接受输入参数Case语句循环 for 语句While语句 内置变量和函数AWK Command Bash使用基础 1. 显示脚本的执行的详细步骤: sh -x shellScript.sh1 2. 判断一条指令是否执行成功 netsta...

目录

Bash使用基础

1. 显示脚本的执行的详细步骤:

sh -x shellScript.sh
  
 
  • 1

2. 判断一条指令是否执行成功

netstat -lpntu | grep 80
echo $? #If output=0 --> 执行指令成功 #If output=1 --> 执行指令不成功
  
 
  • 1
  • 2
  • 3
  • 4

if 语句

格式:

if [ Param1 逻辑运算符 Param2 ] then commands1 elif commmands2 else commands3
fi
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

运算符

$:Shell 中的特殊变量 a. $0 --> 表示Shell或Shell Script的名字 b. $* --> 以一对双引号给出参数列表 c. $@ --> 将各个参数分别加双引号返回 d. $# --> 表示参数的个数 e. $! --> 代表最后执行的后台指令的PID f. $$ --> 代表所有指令的PID g. $_ --> 表示上一个命令的最后的一个参数 h. $? --> 代表上一个指令执行后的退出状态 i. $Number --> 代表脚本名后跟这第Number个参数
''"": 单双引号表示字符 
``: 撇号表示执行``中的指令后返回的结果,并且以列表的形式存放,可以结合for循环语句,将指令执行的结果作为循环的条件
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

逻辑表达式

 -gt --> > greater than 大于
 -ge --> >= greater equal 大于等于
 -lt --> < less than 小于
 -le --> <= less equal 小于等于
 -eq --> = 等于
 -ne --> != not equal 不等于  -z --> null 为空
 -f --> 判断是否存在
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Example:
判断是否存在D/ D / N.tar.$H文件 –> 判断是否存在 -f

if [-f $D/$N.tar.$H]
  
 
  • 1

不将执行指令的结果显示出来

Commands &> /dev/null
Example:

service httpd start &> /dev/null
  
 
  • 1

echo 语句

不换行显示:

echo -n
echo -n "HI Jmilk!" ; echo "How are you?"
  
 
  • 1
  • 2

获取变量内的体积

echo ${#names}
  
 
  • 1

从Bash接受输入参数

########################## 从Bash接受一个参数,再返回一个输出 read -p "Ple input the parameter !" param echo -n "Parameter is " echo $param
########################## SCRIPT END
  
 
  • 1
  • 2
  • 3
  • 4
  • 5

Case语句

一般用于程序启动脚本
Syntax:

case $1 in Param1) Commands ;; Param2) Commands ;; *) Commands esac
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

循环

for 语句

格式1:

for VariableName in Parameter1 Param2 Param3
do commands
done
  
 
  • 1
  • 2
  • 3
  • 4

格式2:

for ((初始值;限制值;执行步进))
do commands
done
  
 
  • 1
  • 2
  • 3
  • 4

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
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

While语句

格式:

while 条件
do commands
done
  
 
  • 1
  • 2
  • 3
  • 4

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
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

内置变量和函数

 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
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

AWK Command

awk 就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
工作原理:读入并分割有’\n’换行符的的一天记录,再将这条记录以(-F ” “)指定的特定分割符来划分出域,填充域,最后使用 Number 来选择显示第几个域并{print Number} 显示。没有-F指定特定分隔符时,默认分隔符为”空白键” 或 “[tab]键”。

grep ^user /etc/passwd | awk -F : '{print $1}'| grep -v ^root
  
 
  • 1

文章来源: is-cloud.blog.csdn.net,作者:范桂飓,版权归原作者所有,如需转载,请联系作者。

原文链接:is-cloud.blog.csdn.net/article/details/50407804

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。