Linux入门(十六)shell&shell变量&设置环境变量&位置参数变量&预定义变量

shell简介

shell是一种命令行解释器,为用户提供与操作系统内核交互的界面。它接收用户输入的命令,解释并执行它们,然后返回结果。Shell 既可以是命令行界面(CLI),也可以是图形用户界面(GUI)

脚本格式要求

1、以#!/bin/bash 开头

2、脚本需要执行权限

创建一个shell脚本

bash 复制代码
cd root
mkdir test_shell_code
cd test_shell_code
vi hello.sh
#!/bin/bash
echo "hello world"

执行脚本

bash 复制代码
#绝对路径
/root/test_shell_code/hello.sh
#相对路径
./hello.sh

有两种方式

1、给所有者执行权限

bash 复制代码
chmod u+x hello.sh
./hello.sh

2、用sh +文件名运行

bash 复制代码
 #移除所有者的执行权限
 chmod u-x hello.sh
 sh hello.sh

shell 变量分为:系统变量、用户自定义变量

系统变量:HOME PATH $USER

$USER 当前登录的用户名

$PATH 可执行文件的搜索路径(用冒号分隔)

$PWD 当前工作目录

$OLDPWD 上一次的工作目录

$SHELL 当前使用的 Shell 程序路径

$UID 当前用户的 UID

$HOSTNAME 系统的主机名

$LANG 当前语言和字符编码设置

$PS1 定义 Shell 提示符的格式

$RANDOM 生成一个随机数(0-32767)

$? 上一条命令的退出状态(0 表示成功,非 0 表示失败)

$$ 当前 Shell 进程的 PID

$! 后台运行最后一个进程的PID

$0 当前脚本或 Shell 的名称

1, 2, ... 脚本的参数($1 是第一个参数, 0 是脚本名) 10 以上的参数需要用 0 是脚本名)10以上的参数需要用 0是脚本名)10以上的参数需要用{10}

$# 脚本的参数个数

\* 或 @ 所有脚本参数( @ 所有脚本参数( @所有脚本参数(\* 合并为一个字符串,@ 保留各参数独立性)。

shell 变量的规则

1、变量的名称可以由字母、数字、下划线组成 但是不能以数字开头

2、定义变量等号两边不能有空格

3、变量的名称一般习惯大写

bash 复制代码
cd /root/test_shell_code
vi var.sh
#!/bin/bash
#定义变量A
A=100
#输出变量需要加$
echo "A=$A"
echo A = $A
#撤销变量A
unset A
echo A=$A
#设置只读常量 不能被unset
readonly B=100
echo B=$B
unset B
C=`date`
echo C=$C
D=$(date)
echo D=$D

设置环境变量

级别语法

export 变量名=变量值

source 配置文件

echo $变量名

bash 复制代码
#查看tomcat 的安装位置
ps -aux | grep tomcat
vi /etc/profile
export TOMCAT_HOME
TOMCAT_HOME='/usr/share/tomcat'

#修改文件之后一定要重新生效
source /etc/profile

#使用TOMCAT_HOME变量 同样也可以在sh文件里使用
echo $TOMCAT_HOME

shell脚本的多行注释

:<<!

注释内容

!

位置参数变量

$0 当前脚本或 Shell 的名称

1, 2, ... 脚本的参数($1 是第一个参数, 0 是脚本名) 10 以上的参数需要用 0 是脚本名)10以上的参数需要用 0是脚本名)10以上的参数需要用{10}

$# 脚本的参数个数

\* 或 @ 所有脚本参数( @ 所有脚本参数( @所有脚本参数(\* 合并为一个字符串,@ 保留各参数独立性)。

bash 复制代码
vi my_shell.sh
#/bin/bash
echo $0 $1 $2
echo $#
echo $@
echo $*

预定义变量

$$ 当前 Shell 进程的 PID

$! 后台运行最后一个进程的PID

$0 当前脚本或 Shell 的名称

1, 2, ... 脚本的参数($1 是第一个参数, 0 是脚本名) 10 以上的参数需要用 0 是脚本名)10以上的参数需要用 0是脚本名)10以上的参数需要用{10}

$# 脚本的参数个数

\* 或 @ 所有脚本参数( @ 所有脚本参数( @所有脚本参数(\* 合并为一个字符串,@ 保留各参数独立性)。

#!/bin/bash

echo "当前进程ID:$KaTeX parse error: Expected 'EOF', got '#' at position 3: " #̲用后台方式运行一个脚本 并获取...!"

echo "执行的结果是:$?"

相关推荐
A小辣椒16 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒19 小时前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式