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

bash 中 ${-#*i} 是什么意思?

--------------------------------------------------
author: hjjdebug
date:   2024年 12月 25日 星期三 17:43:45 CST
description: bash 中 ${-#*i} 是什么意思?
--------------------------------------------------
在centos 的 /etc/profile 中有这样的语句
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then 
            . "$i"                         #是交互式shell, 直接source
        else
            . "$i" >/dev/null              #非交互式shell,  将输出重定向到空
        fi
    fi
done

其中难理解的是:${-#*i}
${-#*i}, 是一个变量置换.
$-: 是一个内置变量,是外壳shell的标志集合,是一个字符串, 我的是himBHs
#是元字符,*也是元字符,i不是元字符,就是字符"i"
# 是从左侧开始查找并删除匹配的意思,最小匹配 ${parameter#[word]} :  
## 是最大匹配 ${parameter##[word]} : 
* 是匹配任何字符
i 是字面意义的i字符


if [ "${-#*i}" != "$-" ] 语句含义:
前部分是变量替换,最小匹配删除从开始到i字符为止得到新变量,与原变量相比
不等就是字符串带i, 等于就是字符串不带i
带i, 则说明shell 是interactive 的, 是交互式shell


 


http://www.kler.cn/a/453844.html

相关文章:

  • Java基于SSM框架的无中介租房系统小程序【附源码、文档】
  • 【C语言】判断是不是闰年
  • 遇到duilib.dll丢失怎么办?解决duilib.dll文件丢失问题的全面指南
  • 07.string类
  • AppAgent 源码 (self_explore.py)
  • 访谈积鼎科技总经理:国产CFD软件发展与未来趋势展望
  • 【运维】文件存储公共盘升级及数据迁移
  • 分布式专题(9)之Mysql高可用方案
  • Unity中实现人物残影效果
  • YashanDB 23.2 YAC -单库多实例架构多活共享集群安装部署指南
  • 【redis面试题】缓存击穿
  • mavlink移植到单片机stm32f103c8t6,实现接收和发送数据
  • 笔记:一次oracle 集群日志维护
  • AdaptFormer:用2%参数,实现视觉Transformer的高效迁移学习,性能超越全量微调(SSv2提升10%,HMDB51提升19%)
  • springboot492基于java线上历史馆藏系统(论文+源码)_kaic
  • JS 异步 ( 一、异步概念、Web worker 基本使用 )
  • 学习记录:配置mybatisplus的分页查询插件,mybatis-plus-jsqlparser 依赖
  • 7.桶排+计数+基数
  • AI驱动的网络安全运维:智能化时代的安全保障
  • uni-app开发订单列表页面