shell export path_学习Shell编程

v2-8240b987e71f99fd01af0d0a13b4d744_1440w.jpg?source=172ae18b

目录

1 什么是Shell
2 Linux的启动过程
3 怎样编写一个Shell脚本
4 Shell脚本的执行方式
5 内建命令和外部命令的区别
6 管道和重定向
7 变量赋值
8 环境变量配置文件

1 什么是Shell

Shell是命令解释器,用于解释用户对操作系统的操作

2 Linux的启动过程

BIOS-MBR-BootLoader(grub)-kernel-systemd-系统初始化-Shell

3 怎样编写一个Shell脚本

  • UNIX的哲学:一条命令只做一件事
  • 为了组合命令和多次执行,使用脚本文件来保存需要执行的命令
  • 赋予该文件执行权限(chmod u+rx filename)

文件名:2.sh

#!/bin/bash

# demo 2

cd /tmp
pwd

v2-63c39035bf7bf97623566a6c8d54f792_b.jpg
执行2.sh,输出/tmp的路径

4 Shell脚本的执行方式

执行命令共四种

(1) bash ./filename.sh

(2)./filename.sh

v2-8f29be137d8fc6feca1d3dae715c179b_b.jpg

v2-778f149b5ab9df6cd8e13aa45b3e369a_b.jpg

这两种方式,Shell脚本产生一个新的bash子进程,脚本执行过程中,是子进程切换到新的目录,当子进程执行完毕后,回到父进程,当前目录不会发生变化。

执行命令

(3)source ./filename.sh

(4). filename.sh

v2-abbea15d2cd6d3db149ac83d6ef841a3_b.jpg

v2-d8e102a1cf33bcdd8ee3405c2e42fc7b_b.jpg

这两种方式,Shell脚本不会产生新的子进程,脚本执行过程中,直接在父进程中进行操作。所以当前目录发生变化。

5 内建命令和外部命令的区别

内建命令不需要创建子进程

内建命令对当前Shell生效

6 管道和重定向

管道与管道符

  • 管道和信号一样,也是进程通信的方式之一
  • 匿名管道(管道符)是Shell编程经常用到的通信工具
  • 管道符是“|”,将前一个命令执行的结果传递给后面的命令
ps | cat
echo 123 | ps

v2-1fff36d8beb8eb890cb6e808aa4d0f78_b.jpg

v2-d018586965bad365bbe698b5d90514ae_b.jpg

重定向符号

一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符

输入重定向符号“<”

read var < /path/to/a/file

v2-8ffec60164aaa17c568e94509d24c1d7_b.png
从/etc/passwd文件中读取有多少行,输出显示有33行

v2-07a11bba2831289607d1bc552311a213_b.jpg
通过var2变量读取a.txt中的数据,输出var2即显示a.txt中的数据

输出重定向符号“>”“>>”“2>”“&>”

echo $var_2 > a.txt

把变量var_2的值输出到a.txt,会覆盖a.txt原有内容。

v2-479ae50236ff6e26240822a4d1d188af_b.jpg

echo $var_3 >> a.txt

把变量var_3的值追加到a.txt,不会覆盖a.txt原有内容。

v2-b14580ee6d204faef649234f7320be94_b.jpg

如果希望把错误信息保存到文件,可以使用“2>”“&>”

nocmd 2> b.txt

把错误信息保存到b.txt中,查看b.txt文件,即显示错误信息。

v2-31057f40c6ee6f1ac6772692019c8f25_b.jpg

nocmd &> c.txt

把所有的输出结果(正确和错误)都保存下来。

v2-97997dfa0d4f867dc362a26cde4bdb68_b.jpg

输入和输出重定向组合使用

在3.sh中新建/home/zopen/test/a.sh,并把echo "hello bash."写入a.sh中

v2-f8dfbc78e1dc356da3cf162e70a3c011_b.jpg

7 变量赋值

变量的定义

变量名的命名规则

(1)字母、数字、下划线

(2)不以数字开头

变量的赋值

为变量赋值的过程,称为变量替换

变量名=变量值,比如:a=123

使用let为变量赋值,比如:let a=10+20

将命令赋值给变量,比如:l=ls

将命令结果赋值给变量,使用$()或者'',比如:letc=$(ls -l /etc)

变量值有空格等特殊字符可以包含在""或''中

变量的引用

  • ${变量名}称作对变量的引用
  • echo ${变量名}查看变量的值
  • ${变量名}在部分情况下可以省略为 $变量名

v2-a1d1e60920d55bf61ca05dc0e3dbb41c_b.jpg

变量的作用范围

  • 变量的默认作用范围
  • 变量的导出 export
  • 变量的删除 unset

v2-c957ba34969bf3a2269ea3781bc6f249_b.jpg
新启动一个bash,echo $a,输出为空,退出bash,echo $a,输出1

export可以把变量从子Shell传递给父Shell

如果想删除变量,则使用:unset 变量名

8 环境变量配置文件

配置文件

  • /etc/profile
  • /etc/profile.d/
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/bashrc

带etc的是系统层次,所有用户共同使用的环境变量。

非etc的是特定用户使用的环境变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值