Linux:shell脚本:基础使用(1)《第一个脚本》

Shell的作用

命令解释器,“翻译官”,介于系统内核与用户之间,负责解释命令行


用户的登录Shell

登录后默认使用的Shell程序,一般为 /bin/bash
不同Shell的内部指令、运行环境等会有所区别

cat /etc/shells


编写第一个Shell脚本 

 格式以*.sh

*是你起的名字,什么名字无所谓,但是结尾必须是sh为结尾的

vim ceshi.sh

里面可以写一些命令,他执行bash命令是依次从上到下执行的

由于是刚刚接触,可以先编写一些简单的语句,这里所谓的语句,就是平时使用的命令

你可以随便写一些,目前这个还是很好理解的


执行脚本的办法

一:./脚本文件路径
二:sh  脚本文件路径
三:source  脚本文件路径

使用第一种要为其设置执行权限         ./脚本文件路径

chmod +x ceshi.sh

第二种和第三种可以不给执行权限   但是他们的结果都是一样的

  

 三种执行方式,都是一样的效果

写入的都是依次执行的


 更完善的脚本构成

为了更完善脚本,向上面那样,也是可以执行的,但是可能会给后来的人添加难度

最好是第一排声明脚本运行的环境

注释信息  以‘#’开头的行为注释行 ,注释行不会执行


重定向 

【类型】【操作符】【用途】

重定向输入 ; < ; 从指定的文件读取数据,而不是从键盘输入

重定向输出; > ;将输出结果保存到指定的文件(覆盖原文件)

重定向输出;>>; 将输出结果追加到指定的文件

标准错误输出;2> ;将错误信息保存到指定的文件(覆盖原文件)

标准错误输出;2>>; 将错误信息追加到指定的文件中

混合输出;&> ; 将标准输出、标准错误的内容保存到同一个文件中

例如下面的

uname -p > kernel.txt

# 将uname 输出的东西写入到 kernel.txt中,并覆盖原有内容

uname -r >> kernel.txt

#将输出内容追加到 kernel.txt ,不会覆盖原文件内容,只是在结尾处新加追加内容

echo "123456" > pass.txt

cat pass.txt

useradd tom

passwd --stdin tom < pass.txt

# 将pass.txt文件内容当成密码,输入到tom的密码里,也就是把tom密码设置为123456


管道操作

将左侧的命令输出结果,作为右侧命令的处理对象 

也就是说,第一次的结果上再次进行第二次处理

例如:

df -hT

 查看磁盘使用情况

df -hT | grep '/$'

  查看磁盘使用情况 ,并检索前面输出内容中以/结尾的

df -hT | grep '/$' | awk '{print $1}

查看磁盘使用情况 ,并检索前面输出内容中以/结尾的,并查看里面的第一个信息 默认是以空格切割开的,$1 就是第一块   $4就是第四块     $1,$3就是看第1块和第三块1的


自定义变量

变量名=变量值

变量名以字母或下划线开头,区分大小写,建议全大写 

如果要查看的话可以使用
echo  $变量名 

变量名=变量值

定义了一个变量  为a赋值了,如果要查看

echo  $变量名 

 现在我们再赋值一个b值为world

输出多个变量可以使用

echo $变量名 $变量名   (中间有没有空格都可以)

  

变量后面添加别的可以使用 

 echo ${变量名}其他的字符

赋值时使用引号的含义

双引号   " 

可以有空格或者其他其他符号  但是写了变量格式,就会输出变量

单引号     ' 

使用变量并不会生效,同时也支持符号


反撇符号的使用 `  

例如:

ls -lh `which useradd`

其中的含义和  ls -lh /usr/sbin/useradd  是一样的

他会优先处理 ··  里的内容然后将 ·· 的输出内容添加到前面的命令中

rpm -qc `rpm -qf `which useradd``

例如这个意思上是对的但是输出结果不对,我们还有另外一种写法

rpm -qc $(rpm -qf $(which useradd))

也是依次执行

先执行最里面的


read输入变量

read 变量名

输入变量内容

输入完变量值后回车

如果需要带有输入提示的read可以使用

read -p '提示语句' 变量名

 

现在ppp的变量值为hello world

  


设置变量的作用范围

变量范围分为局部变量全局变量 

向上面我们设置的变量全为局部变量

 如上图,我们在bash里设置了变量,当我们在当前bash里查看就可以查看到,当我们切换进入子bash里查看就查看不到了-------这个就是局部变量

设置全局变量

export 变量名=变量值

将局部变量转换为全局变量 

 现在q和w均为局部变量

使用

export 变量名 后面可以跟多个变量名

export 变量名 变量名 ……


整数变量的运算(expr)

expr  变量1   运算符  变量2  [运算符 变量3] ... 

 常用运算符
*加法运算:+

*减法运算: -

*乘法运算: \*

*除法运算: /

*求模(取余)运算: % 

$()  --- 命令嵌套``

${}  -----  解决变量名混淆问题

$(())  --- 实现整数的混合运算

 


特殊的Shell变量 

由系统提前创建,用来设置用户的工作环境 

配置文件: /etc/profile、~/.bash_profile 

常见的环境变量:
*PWD、PATH
*USER 、SHELL、HOME 

这些我们没有手动创建,是系统自动创建的

例如我们制作用户登录的欢迎脚本 

vim /opt/tarro.sh

写入
#!/bin/bash
echo "欢迎名称为: $USER  的用户登录"
chmod +x /opt/tarro.sh 
vim /etc/profile

在最后一行输入
source /opt/tarro.sh


位置变量

意思就是当我们在脚本里写了变量,但是没有明确给变量的变量值

我们可以在执行脚本的时候在后面把值写上  空格隔开,每个值对应着相应位置的变量

随便创建一个脚本里面写入

这时hello就对应着$1 world对应着$2 

 没有明确写变量值的变量可以在执行脚本前后面加上对应的值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值