shell编程

Posted zhouzhiwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程相关的知识,希望对你有一定的参考价值。

一、shell脚本写法

1、脚本第一部分,魔法字符 #!/bin/bash 指定解析器

<!--指定解析器-->
#!/bin/bash

2、脚本第二部分,对脚本的信息进行说明

<!--脚本说明-->
#Name: 名字
#Desc: 脚本功能描述
#Path: 存放路径

3、脚本第三部分,脚本要实现的具体代码内容

<!--打印hello world的shell代码-->
echo hello world

 

二、shell脚本的执行方式

1、标准执行方式:绝对路径 脚本文件名 

注:在执行之前需添加执行权限

<!--脚本标准执行-->
chmod +x first_shell.sh
/usr/tmp first_shell.sh

 

2、非标准执行方式:

<!--指定解析器执行-->
bash first_shell.sh

<!--使用source读取脚本文件,执行文件里的代码-->
source first_shell.sh

 

三、变量的使用

 1、变量的定义方式

<!--变量定义方式一:直接赋值-->
A=10
echo $A

<!--变量定义方式二:命令行返回结果-->
A="$(cat /etc/hosts)"
echo $A

<!--变量定义方式三:交互式定义变量read,用户输入-->
<!--选项说明:1、-p 提示用户输入信息  2、-n 定义字符数 3、-p 不显示 4、-t 定义超时时间>
read -p "请输入用户名:" name
请输入用户名:james
echo $name

<!--变量定时方式四:交互式定义变量read,读取文件内容-->
read -p "请输入文件内容:" content < file.txt

<!--变量定义方式五:declare定义有类型的变量-->
<!--1、-i 整型 2、-r 只读 3、-a 定义普通数组 4、-A 定义关联数组 5、-x 将变量通过环境导出-->
declare -i A=100
echo $A

 

 2、变量调用方式

<!--变量调用方式一:$-->
A=10
echo $A

<!--变量调用方式二:${}-->
A=10
echo ${A}

 

 3、变量类型

1)本地变量:当前用户自定义的变量。

<!--本地变量-->
A=100
echo $A

 

2)环境变量:当前进程有效且能够被子进程调用的变量

env:查看当前用户的环境变量、

set:查询当前用户的所有变量(环境变量和临时变量)

export:export 变量名=变量值

     变量名=变量值;export 变量名

<!--将一个临时变量编程环境变量-->
export A=hello
env grep|^A
A=hello

<!--永久生效-->
vim /etc/profile
export A=hello

 

3)全局变量:所有用户和程序都能调用且继承的变量

相关配置文件解读:

$HOME/.bashrc:当前用户的bash信息,用户登录时读取

$HOME/.bash_profile:当前用户的环境变量,用户登录时读取

$HOME/.bash_logout:当前用户的bash信息,用户登出时读取

etc/bashrc:全局的bash信息,所有用户都生效

etc/profile:全局环境变量

注:修改以上文件,必须重新登录或者source命令才能生效

 

4)系统变量(内置bash中的变量):shell中已经固定好了它的名字和作用

<!--($n):n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要大括号包含,如${10}-->
echo $1
echo $7
test.sh 1 2 3 4 5 6 7
1
3

<!--($#):获取所有输入参数个数-->
vim test.sh
echo $1
echo $3
echo $7
test.sh 1 2 3 4 5 6 7
1
3
7

<!--($*):这个变量代表命令行中所有的参数,$*把所有参数看作一个整体-->
<!--($@):这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待-->
vim test.sh
echo $*
echo $@
test.sh 1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7

<!--($?):最后一次执行的命令的返回状态-->
<!-- 0:上一个命令正确执行 非0:上一个命令执行不正确>
$?

 

以上是关于shell编程的主要内容,如果未能解决你的问题,请参考以下文章

代码片段:Shell脚本实现重复执行和多进程

Linux bash基础特性二

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

使用 Pygments 检测代码片段的编程语言

面向面试编程代码片段之GC