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

相关推荐
这儿有一堆花5 小时前
任何东西都可以转成 Base64!?
bash
wasp5206 小时前
Banana Slides 深度解析:AI Core 架构设计与 Prompt 工程实践
人工智能·prompt·bash
市场部需要一个软件开发岗位9 小时前
一个无人机平台+算法监督平台的离线部署指南
java·python·算法·bash·无人机·持续部署
dingdingfish10 小时前
Bash学习笔记总目录
bash·script·programming
代码AI弗森1 天前
Git Bash 与 PowerShell:定位差异、使用场景与选择建议
开发语言·git·bash
ajole1 天前
Linux学习笔记——基本指令
linux·服务器·笔记·学习·centos·bash
遨游xyz1 天前
策略模式笔记
开发语言·word·bash
hhy_smile2 天前
Ubuntu24.04 环境配置自动脚本
linux·ubuntu·自动化·bash
拓云者也2 天前
常用的生物信息学数据库以及处理工具
数据库·python·oracle·r语言·bash
超级大福宝3 天前
PowerShell 实现类似 Bash 的补全行为
bash·powershell