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

相关推荐
Solyn_HAN13 小时前
非编码 RNA(ceRNA/lncRNA/circRNA)分析完整流程:从数据下载到功能验证(含代码模板)
python·bash·生物信息学·r
叶羽西18 小时前
Bash基础知识-[[和]]用于条件测试
开发语言·bash
不想画图20 小时前
Linux——小白初识shell脚本(二)
linux·运维·bash
裤裤兔2 天前
linux提取指定前缀文件到其他文件夹
linux·运维·服务器·bash·终端
凄戚2 天前
bash和命令
开发语言·chrome·bash
Evan芙3 天前
Bash 变量命名规则与类型使用
linux·运维·开发语言·chrome·bash
归叶再无青3 天前
nginx从入门到实践全指南
运维·nginx·bash
胖咕噜的稞达鸭3 天前
进程概念,冯诺依曼体系结构,系统调用,父子进程初解
https·vim·bash
二进制的Liao4 天前
【编程】脚本编写入门:从零到一的自动化之旅
数据库·python·算法·自动化·bash
vortex57 天前
Bash Glob 通配符详细指南:从 POSIX 标准到高级用法
开发语言·bash