shell(云计算脚本篇)

第一章:变量

###注意所有的操作作者都是在Linux系统上面完成的

语言的概述

shell,Python 是解释型语言

优缺点:跨平台能力强,易于调,执行速度慢

shell定义

shell  是命令解释器 ,用于与操作系统交互,用来完成各种任务,如文件操作,系统管理,网络管理等

shell 是一种程序设计语言,他有变量,有自己的语法结构等,shell程序设计语言可以编写功能很强、代码简短的程序

&: 后台运行

nohup:正在运行一个进程,退出账户是该进程不会结束

jobs:查看后台进行

bg  %工作号:将一个在后台暂停的命令,变成继续执行

fg   %工作号:将后台中的命令调至前台继续运行

一、变量

shell 执行方式

  1. bash

  2. sh

  3. .

  4. source ./

    1和2 是子shell 3和4 是本shell 子shell是在一个虚拟环境运行脚本本机不会有痕迹(变量) 本shell是在本机运行脚本 会留下痕迹(变量)  

#定义变量

变量名=变量值      例如:aa=123

追加变量

aa="$aa"456 或者 aa=${aa}456 #在变量的基础上追加变量

echo $aa    #打印/查看变量是否成功赋值

查看变量

set #查看所有变量

set | grep aa(变量名) #查看aa变量

删除变量

unset 变量名    #删除变量

三目表达式

&& 和 || 是三目表达式

&&如果前面的命令成功 执行后面的命令输出 upup ,|| 前面的命令失败执行后面的命令 downdown

例如:

ping -c1 www.baidu.com &>/dev/null && echo upup || echo downdwon

交互式变量 read

read 从键盘上读取变量值 -p 指定读取时的提示符

read赋值方式 : read 变量名

例如:read -p "请输入您要查看的ip:" ip ping -c1 $ip &>/dev/null && echo upup || echo downdwon

引号

"" 弱引号 ' ' 强引号 `` 优先执行

整数运算

一: expr \ * 是乘法 \是转义符

expr 1 + 2

二:$(())

echo $((2**3)) #2的3次方

三:$[]

echo $[2**3] #2的3次方

四:let

let i++ ;echo $i #每运行一次i值加一

let i-- ;echo $i #每运行一次i值减一

let ++i ;echo $i

i++ #先赋值在运算

++i #先运算在赋值

变量内容的替换

例如:url=www.qianfeng.com

echo ${url/qianfeng/baidu} 输出的结果是www.baidu.com

echo ${url/n/N} 输出的结果是www.qiaNfeng.com(只用一个n是大写)

echo ${url//n/N}输出的结果是www.qiaNfeNg.com(全部的N都变成大写)

内容的删除

例如:url=www.sian.com.cn

echo ${#url} 输出结果是15 #获取变量的长度

echo ${url#*.} #从前往后,最短匹配 输出的结果是sian.com.cn

echo ${url##*.} #从前往后,最长匹配 输出的结果是cn

echo ${url%.*} #从后往前,最短匹配 输出的结果是www.sian.com

echo ${url%%.*} #从后往前,最长匹配 输出的结果是www

#是 从前往后的删除

%是 从后往前的删除

索引及切片

url=www.sian.com.cn

echo ${url:0:5} #从索引是0的开始打印5行

echo ${url:5:5} #从索引是5的开始打印5行

echo ${url:5} #从索引是5的开始打印后面的全部

小数运算

需要提前安装计算机程序bc

echo "2^6" | bc # 2的6次方

echo "scale=2;6/4" | bc #scale=2是保留小数后面两位

算术运算

+ - * / %(模/余) ^(幂2^3)
​
awk -F: '$3 * 10 > 500' /etc/passwd
awk -F: '{ if($3*10>500){print $0} }' /etc/passwd

环境变量

export 变量名 #声明变量

环境变量 不管在哪一个shell环境下都可以运行

ll=123 #自定义变量

export ll #把自定义变量转化为环境变量

bash #进入一个新的shell环境

echo $ll #调用变量

123 #输出结果

pstree 以树状图的方式展示进程之间的父子关系

自定义变量不允许在别的环境中运行 要想运行转化为环境变量

声明之后的变量 只能在同一个终端中使用 子系定义的变量父系不可以使用

要想在别的终端中使用变量在.bash_profile 或者是/etc/profile中声明变量

位置变量和预定义变量

运行脚本时加参数

位置变量

位置变量是$1,$2,$3,$4........

位置变量预先已经定义过

用户使用时,必须携带参数

位置变量不是程序设计的唯一方式 比如: read也可以

预定义变量

$0 脚本名/程序名

$* 所有的参数

$# 参数的个数

$? 上一个程序的返回值(0是成功(对),非0失败(错))

$$ 程序的PID

$!上一个程序的pid

例如:

#!/bin/bash echo "($1+$2)/2" |bc echo "程序名是$0" echo "程序的参数是$*"

总结: 这两种变量,在设计时已经定义好了 需要时直接调用即可

stdin

stdin 标准输入 用于非交互式

如: echo"123" | passwd --stdin 用户名

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值