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

相关推荐
谢栋_11 小时前
设计模式从入门到精通之(六)策略模式
设计模式·bash·策略模式
davenian12 小时前
< 自用文 OS 有关 > (续)发现正在被攻击 后的自救 Fail2ban + IPset + UFW 工作流程详解
ubuntu·bash·fail2ban·ipset
码界奇点13 小时前
从零构建Linux Shell解释器深入理解Bash进程创建机制
linux·运维·解释器模式·bash·ux·源代码管理
2501_9200470313 小时前
bash自带的切片操作
开发语言·python·bash
初学者_xuan2 天前
零基础Linux操作基础小白快速掌握Shell脚本bash的配置文件
linux·运维·bash·shell脚本
zz-zjx3 天前
shell编程从0基础--进阶 1
linux·运维·前端·chrome·bash
Dontla3 天前
pip completion工具作用(生成命令行自动补全脚本)(与pip-bash-completion区别)
chrome·bash·pip
Lynnxiaowen3 天前
今天我们继续学习shell编程语言的内容
linux·运维·学习·云计算·bash
aitav06 天前
⚡ Linux find 命令参数详解
linux·运维·服务器·bash·gnu
青草地溪水旁7 天前
在 Git Bash 中查看 Git 仓库远程地址
git·bash