Shell编程自学笔记(一)——入门+变量

本文介绍了 Linux Shell 的基础知识,包括 Shell 脚本的执行方法、变量定义及使用、环境变量设置等内容。通过实际示例展示了如何创建并运行 Shell 脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考网址为:【小白入门 通俗易懂】2021韩顺平 一周学会Linux_哔哩哔哩_bilibili

请大家多多支持韩老师~

大部分内容为教程内容,也有部分自己实验和添加的内容,如涉及侵权,会进行删除。


一、Shell简介

1、Shell:命令解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序。用户可以用Shell来启动、挂起、停止甚至是编程一些程序。 文件格式:xxx.sh

2、Shell脚本的执行方法

(1)脚本格式要求

a 通常以 #!/bin/bash开头

b 有可执行权限

(2) 脚本常用执行方式

方式1:输入脚本的绝对路径或相对路径(需要先赋予其x执行权限)

方式2:sh+脚本(不用赋予x权限)

示例:hello.sh

(1)创建hello.sh脚本:

[root@SHUYUAN ~]# cd /root/shcode/
[root@SHUYUAN shcode]# ls
[root@SHUYUAN shcode]# vim hello.sh 

(2)编辑内容

#!/bin/bash
echo "hello,world~"

(3)执行方式1:相对路径

[root@SHUYUAN shcode]# chmod u+x hello.sh 
[root@SHUYUAN shcode]# ll
总用量 8
-rwxr--r--. 1 root root  34 8月   4 10:07 hello.sh
-rwxr--r--. 1 root root 223 7月  28 20:04 var.sh
[root@SHUYUAN shcode]# ./hello.sh 
hello,world~

执行方式2:绝对路径

[root@SHUYUAN shcode]# /root/shcode/hello.sh 
hello,world~
[root@SHUYUAN shcode]# 

 执行方式3:sh+脚本

[root@SHUYUAN shcode]# sh hello.sh 
hello,world~

二、Shell变量

1、shell变量介绍

(1)变量分类:a 系统变量;b 自定义变量

(2)系统变量:$HOME、$PWD、$SHELL、$USER……

(3) 显示当前shell中所有变量:set

2、shell变量的定义

a 定义变量:变量名=值(中间不能打空格)

b 撤销变量:unset

c 声明静态变量:readonly变量

示例:


  1 #!/bin/bash
  2 #案例1:定义变量A
  3 A=100
  4 #输出变量需要加上$
  5 echo A
  6 echo A=$A
  7 echo "A=$A"
  8 
  9 #案例2:撤销变量A
 10 unset A
 11 echo "A=$A"
 12 #输出A= 
 13 
 14 #案例3:声明静态的变量B=2,不能unset
 15 readonly B=2
 16 echo "B=$B"
 17 #输出B=2.静态变量不能unset
 18 unset B

输出如下: 

A
A=100
A=100
A=
B=2
./var.sh: 第 18 行:unset: B: 无法反设定: 只读 variable

3、shell变量的定义规则

(1)变量名称可以由字母、数字、下划线组成,不能以数字开头

(2)等号两侧不能有空格

(3)变量名称一般习惯大写(小写不规范)

4、将命令的返回赋值给变量

(1)A=`date`反引号(同波浪键),运行里面的命令,并将结果返回给变量A

(2)A=$(date)等价于反引号

示例:

 20 #将指令返回的结果赋给变量
 21 C=`date`
 22 D=$(date)
 23 echo "C=$C"
 24 echo "D=$D"

输出结果: 

C=2021年 08月 04日 星期三 10:49:00 CST
D=2021年 08月 04日 星期三 10:49:00 CST

三、设置环境变量

1、基本语法

(1)export 变量名=变量值 (将shell变量输出为环境变量/全局变量)

(2)source 配置文件 (让修改后的配置信息立即生效)

(3)echo $变量名 (查询环境变量的值)

2、示例:设置环境变量TOMCAT_HOME

[root@SHUYUAN shcode]# vim /etc/profile
#定义一个环境变量
export TOMCAT_HOME=/opt/tomcat
[root@SHUYUAN shcode]# source /etc/profile
[root@SHUYUAN shcode]# echo $TOMCAT_HOME
/opt/tomcat

四、位置参数变量

1、执行shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。

2、基本语法

(1)$n   n为数字,$0表示命令本身,$1-$9表示第一到第九个参数

                10以上的参数用大括号:${10}

(2)$*    表示命令行中所有的参数,当成整体

(3)$@  表示命令行中所有参数,把每个参数区分对待

(4)$#    表示命令行中所有参数的个数

示例:编写一个shell脚本position.sh,在脚本中获取到命令行的各个参数信息。

(1)创建myshell.sh脚本:

[root@SHUYUAN shcode]# vim myshell.sh

(2)编辑内容: 

  1 #!/bin/bash
  2 echo "0=$0 1=$1 2=$2"
  3 echo "所有的参数=$*"
  4 echo "$@"
  5 echo "参数的个数=$#"

(3)输出结果:

[root@SHUYUAN shcode]# chmod u+x myshell.sh 
[root@SHUYUAN shcode]# ./myshell.sh 100 200
0=./myshell.sh 1=100 2=200
所有的参数=100 200
100 200
参数的个数=2

五、预定义变量

1、概念:shell设计者事先已经定义好的变量,可以直接在shell脚本中使用

2、基本语法

(1)$$ 当前进程的进程号PID

(2)$! 后台运行的最后一个进程的进程号 PID

(3)$? 最后一个执行的命令的返回状态。0:命令正确执行;非0:命令执行不正确

示例:在preVar.sh脚本中简单使用一下预定义变量

(1)创建preVar.sh脚本:

[root@SHUYUAN shcode]# vim myshell.sh

(2)编辑内容 :

  1 #!/bin/bash
  2 echo "当前执行的进程id=$$"
  3 #以后台的方式运行一个脚本,并获取他的进程号
  4 /root/shcode/myshell.sh &
  5 echo "最后一个后台方式运行的进程id=$!"
  6 echo "执行的结果是=$?"

(3)输出结果: 

[root@SHUYUAN shcode]# chmod u+x preVar.sh 
[root@SHUYUAN shcode]# ./preVar.sh 
当前执行的进程id=8810
最后一个后台方式运行的进程id=8811
执行的结果是=0
[root@SHUYUAN shcode]# 0=/root/shcode/myshell.sh 1= 2=
所有的参数=

参数的个数=0
^C

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值