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

相关推荐
无聊的小坏坏17 小时前
环境变量深度解析:从配置到内核的全链路指南
linux·bash
Chuncheng's blog20 小时前
如何基于Mihomo Party http端口配置git与bash命令行代理
git·http·bash
开挖掘机上班3 天前
Bash shell四则运算
linux·开发语言·bash·shell
无聊的小坏坏4 天前
Linux 权限管理入门:从基础到实践
linux·ubuntu·bash
无影无踪的青蛙4 天前
[Windows]在Win上安装bash和zsh - 一个脚本搞定
bash
诚丞成5 天前
苍茫命令行:linux模拟实现,书写微型bash
linux·chrome·bash
困惑阿三8 天前
解决 iTerm2 中 nvm 不生效的问题(Mac 环境)
开发语言·前端·macos·bash
Cacciatore->9 天前
Zsh/Bash Conda设置延迟启动,启动速度优化
conda·bash·zsh
万里不留行9 天前
定时清理流媒体服务器录像自动化bash脚本
服务器·自动化·bash·音视频
蔡蓝10 天前
设计模式-开放封闭原则
java·开发语言·设计模式·bash