Linux_shell编程

快速入门

Shell是什么

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

脚本格式

  1. 脚本以#!/bin/bash开头
  2. 脚本需要有可执行权限
#!/bin/bash
echo "hello,world~"

脚本的常用执行方式

√方式1(输入脚本的绝对路径或相对路径)
说明:首先要赋予helloworld.sh脚本的+x权限,再执行脚本

[root@bedo19c shcode]# chmod u+x hello.sh
[root@bedo19c shcode]# ./hello.sh 
hello,world~

使用绝对路径/root/shcode/hello.sh

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

√方式2(sh+脚本)
说明:不用赋予脚本+x权限,直接执行即可。比如sh hello.sh,也可以使用绝对路径

[root@bedo19c shcode]# chmod u-x hello.sh 
[root@bedo19c shcode]# sh hello.sh 
hello,world~

shell变量

shell变量介绍

  1. Linux Shell中的变量分为,系统变量和用户自定义变量
  2. 系统变量:$HOME、$PWD、$SHELL、$USER等等,比如:echo $HOME等等…
  3. 显示当前shell中所有变量: set

shell变量的定义

  1. 定义变量: 变量名=值
  2. 撤销变量: unset变量
  3. 声明静态变量: 1readonly变量,注意:不能unset

示例:

#!/bin/bash
#1.定义变量A
A=100
#输出需要加上$
echo A=$A
echo "A=$A"

#2.撤销变量A
unset A
echo "A=$A"

#3.声明静态变量B=2,不能unset
readonly B=2
echo "B=$B"

#4.将指令返回的结果赋给变量
C=`date`
D=$(date)
echo "C=$C"
echo "D=$D"

结果:

[root@bedo19c shcode]# ./var.sh
A=100
A=100
A=
B=2
C=Mon Oct 17 16:02:14 EDT 2022
D=Mon Oct 17 16:02:14 EDT 2022

设置环境变量

  1. export 变量名-变量值 (功能描述:将shell变量输出为环境变量/全局变量)
  2. source配置文件 (功能描述:让修改后的配置信息立即生效)
  3. echo $变量名 (功能描述:查询环境变量的值)

位置参数变量

$n (功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
$#(功能描述:这个变量代表命令行中所有参数的个数)

示例:

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

结果:

[root@bedo19c shcode]# ./myshell.sh 100 200
0=./myshell.sh 1=100 2=200
所有参数=100 200
100 200
参数的个数=2

预定义变量

  1. $$ (功能描述:当前进程的进程号(PID) )
  2. $! (功能描述:后台运行的最后一个进程的进程号(PID))
  3. $? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行,如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

示例:

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

结果:

[root@bedo19c shcode]# ./preVar.sh 
当前执行的进程 id=23091
最后一个后台方式运行的进程id=23092
执行的结果是=0

你可能感兴趣的:(linux,linux,bash,运维)