仅返回 bash glob 的扩展部分

Tom*_*its 6 bash shell-script

假设我的目录包含文件 hesa1.c 和 hesa2.c。以下 bash 脚本

#!/bin/bash
for j in hes*.c
do
echo $j
done
Run Code Online (Sandbox Code Playgroud)

返回 hesa1.c 和 hesa2.c 。

我如何让这个 bash 脚本只返回 a1 和 a2(即通配符扩展成什么)?

Ste*_*itt 5

这不是一个完全通用的答案,如“仅显示通配符扩展”,但您可以使用 shell 的参数扩展功能来删除 glob 的固定部分:

j=${j#hes}
echo ${j%.c}
Run Code Online (Sandbox Code Playgroud)

这将删除开头的固定“hes” j,然后删除结尾处的固定“.c” j