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

相关推荐
时光803.2 天前
快速搭建青龙面板Docker教程
windows·ubuntu·bash·httpx
无奈笑天下2 天前
银河麒麟V10虚拟机安装vmtools报错:/bin/bash解释器错误, 权限不够
linux·运维·服务器·开发语言·经验分享·bash
DevGu3 天前
Linux 子账户显示bash-4.25,不显示用户名
linux·运维·bash
花哥码天下3 天前
修复Bash脚本Here Document错误
开发语言·bash
秋邱3 天前
Java面向对象进阶实战:用工厂模式+策略模式优化支付系统
java·bash·策略模式
junlaii5 天前
Windows Claude Code Git Bash 依赖修复教程
windows·git·bash
Percep_gan5 天前
解决-bash: /usr/bin/yum: No such file or directory
开发语言·bash
gis分享者6 天前
Bash 中如何使用正则表达式进行文本处理?(中等)
正则表达式·bash·shell·文本·处理
可能是这样吧7 天前
向已有仓库上传,并单独建分支(使用 Git Bash)
git·bash
一个平凡而乐于分享的小比特7 天前
Linux/Unix系统主流脚本语言--Bash语言
linux·bash·脚本语言