当前位置: 首页 > news >正文

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

shell简介
shell是一种命令行解释器,为用户提供与操作系统内核交互的界面。它接收用户输入的命令,解释并执行它们,然后返回结果。Shell 既可以是命令行界面(CLI),也可以是图形用户界面(GUI)
脚本格式要求
1、以#!/bin/bash 开头
2、脚本需要执行权限
创建一个shell脚本

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

执行脚本

#绝对路径
/root/test_shell_code/hello.sh
#相对路径
./hello.sh

在这里插入图片描述
有两种方式
1、给所有者执行权限

chmod u+x hello.sh
./hello.sh

在这里插入图片描述
2、用sh +文件名运行

 #移除所有者的执行权限chmod u-x hello.shsh 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、变量的名称一般习惯大写

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 $变量名

#查看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}
$# 脚本的参数个数
$* 或 @ 所有脚本参数( @ 所有脚本参数( @所有脚本参数(* 合并为一个字符串,$@ 保留各参数独立性)。

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 “执行的结果是:$?”

相关文章:

  • langchain_mcp_adapters - MultiServerMCPClient 获取工具
  • 全球化2.0|云轴科技ZStack联合Teleplex举办技术沙龙 · 吉隆坡站
  • Flask文件上传与异常处理完全指南
  • 【Qt】QStateMachine状态机-对状态机分组、历史状态,实现复杂状态机
  • Git命令与代码仓库管理
  • qt中自定义控件编译成动态库
  • RabbitMQ核心函数的参数意义和使用场景
  • 深入解析JVM字节码执行引擎
  • SpringBoot自动化部署实战指南
  • 5、ZYNQ PL 点灯--流水灯
  • Android 中 OkHttp 的自定义 Interceptor 实现统一请求头添加
  • Laravel 从版本 5 到 12 每个版本都引入了一些新的特性、改进和弃用的功能
  • Android 获取签名 keystore 的 SHA1和MD5值
  • 前端构建工具(Webpack\Vite\esbuild\Rspack)拆包能力深度解析
  • TC3xx中PFLASH缓存对XCP标定常量的影响
  • 13_算法链与管道
  • 机器学习算法_支持向量机
  • Linux免驱使用PCAN,使用方法以Ubuntu为例
  • 123数字人视频剪辑源码搭建部署/数字人视频创作技术开发
  • 数据结构 学习 栈 2025年6月14日 11点09分
  • 优秀企业网站制作/产品市场推广方案范文
  • 怎么做网站推销产品/百度推广一年大概多少钱
  • 兼职网站做任务/网络营销师报名入口
  • 如何看网站空间问题/seo站内优化培训
  • 金泉网做网站要找谁/农产品网络营销推广方案
  • 网站建设可用性的五个方面/一键优化清理手机