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

shell编程笔记

变量定义

在 Shell 中,变量定义无需声明类型,直接赋值即可。变量名区分大小写,建议使用大写字母命名环境变量,小写字母命名局部变量。赋值时等号(=)两边不能有空格。

MY_VAR="Hello World"  # 定义变量
local_var=123         # 局部变量

变量引用

使用 $ 符号或 ${} 引用变量。${} 可以避免歧义,例如变量名与后续字符粘连时。

echo $MY_VAR       # 输出变量值
echo "Value: ${local_var}abc"  # 避免解析为 $local_varabc

特殊变量

Shell 提供一些特殊变量,用于脚本操作:

  • $0:脚本名称
  • $1, $2, …:脚本参数
  • $#:参数个数
  • $?:上一条命令的退出状态(0 表示成功)
  • $$:当前脚本的进程 ID
echo "Script name: $0"
echo "First argument: $1"
echo "Total arguments: $#"

环境变量

环境变量可用于所有子进程。使用 export 命令将变量提升为环境变量。

export PATH=$PATH:/usr/local/bin  # 追加路径到 PATH
env | grep PATH                   # 查看环境变量

变量操作

字符串操作
name="shell_script"
echo ${name:0:5}    # 截取前5个字符(输出 "shell")
echo ${name#shell}  # 删除前缀(输出 "_script")
echo ${name/_/-}    # 替换第一个 _ 为 -(输出 "shell-script")
默认值设置
unset var
echo ${var:-default}  # 若 var 未定义,输出 "default"
echo ${var:=default}  # 若 var 未定义,赋值并输出 "default"

数组定义与操作

Shell 支持一维数组,下标从 0 开始。

fruits=("apple" "banana" "cherry")
echo ${fruits[1]}       # 输出 "banana"
echo ${fruits[@]}       # 输出所有元素
echo ${#fruits[@]}      # 输出数组长度
fruits+=("orange")      # 追加元素

只读变量

使用 readonly 标记的变量不可修改。

readonly PI=3.14
PI=3.14159  # 报错:readonly variable

删除变量

使用 unset 删除变量,但无法删除只读变量。

unset MY_VAR  # 删除变量

命令替换

将命令输出赋值给变量,使用 $() 或反引号 `

current_date=$(date)
echo "Today is $current_date"

算术运算

使用 $(( )) 进行整数运算。

sum=$(( 5 + 3 * 2 ))
echo "Result: $sum"  # 输出 11

注意事项

  • 变量赋值时避免空格:var=value 正确,var = value 会报错。
  • 字符串赋值无需引号,但包含空格或特殊字符时需要引号。
  • 单引号(')不解析变量,双引号(")会解析变量。

相关文章:

  • 放假带出门的充电宝买哪种好用耐用?倍思超能充35W了解一下!
  • [NOIP 2001 普及组] 求先序排列 Java
  • Python中的异常处理:如何优雅地处理程序中的错误
  • 【Python】第一弹:对 Python 的认知
  • 【技能篇】Java 面试题大全
  • 测试分类详解
  • 系统架构设计综合知识与案例分析
  • VR看房系统,新生代看房新体验
  • docker-compose搭建prometheus以及grafana
  • manus对比ChatGPT-Deep reaserch进行研究类论文数据分析!谁更胜一筹?
  • 【后端高阶面经:架构篇】50、数据存储架构:如何改善系统的数据存储能力?
  • Ubuntu 22.04 系统下 Docker 安装与配置全指南
  • Python中openpyxl库的基础解析与代码实例
  • 微信小店推客系统达人用户管理的数据支持和便利
  • window10下docker方式安装dify步骤
  • Leetcode 2005. 斐波那契树的移除子树游戏
  • 【算法提升】分组 day_tow
  • 【Doris基础】Apache Doris业务场景全解析:从实时数仓到OLAP分析的完美选择
  • ECS-7000能耗监测系统能耗数据管理机
  • iEKF的二维应用实例
  • 做网站用哪些软件/商丘网站建设公司
  • 网站开发及企业推广/站长分析工具
  • 做动态logo网站/潍坊在线制作网站
  • 网站默认首页设置/网站流量统计分析工具
  • 不登陆不收费的网站链接/优秀企业网站欣赏
  • wordpress新增目录/seo官网优化怎么做