Você não pode combiná-los com bash
(ou POSIXly), você precisa fazer isso em duas etapas.
i=${x#*/}; i=${i%%/*}
Isso é portátil para qualquer shell POSIX. Se você precisa de portabilidade para o shell Bourne (mas por que você marcaria sua pergunta / bash ?), Caso você esteja migrando para o Solaris e forçado a usar /bin/sh
em vez do padrão sh
lá, ou portando para sistemas de 20 anos de idade), você poderia usar essa abordagem (que funcionará bem com shells POSIX):
IFS=/; set -f
set x $x
i=$3
(acima é um dos casos muito raros em que faz sentido deixar uma variável sem aspas).
Apenas para o registro, com zsh:
print -rl -- x86-headers/*/C/populate.sh(:h:h:t)
(o t ail da h ead do h ead do arquivo).
Ou para a sua abordagem python
:
x=elf/C/populate.sh
i=${${(s:/:)x}[2]}