Você colocou o token *
glob no lugar errado, coloque if antes de :
enquanto estiver usando ##
(ou #
) para se livrar da parte da esquerda:
${PATH#*:} ## Non-greedy
${PATH##*:} ## Greedy
O conteúdo da variável PATH no meu sistema é o seguinte:
> echo $PATH
/c/Users/USER/bin:/mingw32/bin:/usr/local/bin:/usr/bin:/bin:/mingw32/bin:/usr/bin:/c/Users/USER/bin:/c/ProgramData/Oracle/Java/javapath:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Program Files/Broadcom/Broadcom 802.11 Network Adapter/Driver:/c/Program Files/Toshiba/Bluetooth Toshiba Stack/sys:/c/Program Files/Internet Explorer:/c/Program Files/Common Files/lenovo/easyplussdk/bin:/c/Program Files/Skype/Phone:/cmd:/usr/bin/vendor_perl:/usr/bin/core_perl
Agora, ${variable## pattern}
exclui o padrão de correspondência mais longo do início e retorna o restante.
Portanto, se arg=${PATH##:*}
deve corresponder ao padrão mais longo começando com :
seguido por qualquer coisa.
echo $arg
deve retornar /c/Users/USER/bin
No entanto, echo $arg
no meu sistema retorna a saída como:
/c/Users/USER/bin:/mingw32/bin:/usr/local/bin:/usr/bin:/bin:/mingw32/bin:/usr/bin:/c/Users/USER/bin:/c/ProgramData/Oracle/Java/javapath:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Program Files/Broadcom/Broadcom 802.11 Network Adapter/Driver:/c/Program Files/Toshiba/Bluetooth Toshiba Stack/sys:/c/Program Files/Internet Explorer:/c/Program Files/Common Files/lenovo/easyplussdk/bin:/c/Program Files/Skype/Phone:/cmd:/usr/bin/vendor_perl:/usr/bin/core_perl
Similarmente, echo ${PATH#:*}
retorna a mesma saída
/c/Users/USER/bin:/mingw32/bin:/usr/local/bin:/usr/bin:/bin:/mingw32/bin:/usr/bin:/c/Users/USER/bin:/c/ProgramData/Oracle/Java/javapath:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Program Files/Broadcom/Broadcom 802.11 Network Adapter/Driver:/c/Program Files/Toshiba/Bluetooth Toshiba Stack/sys:/c/Program Files/Internet Explorer:/c/Program Files/Common Files/lenovo/easyplussdk/bin:/c/Program Files/Skype/Phone:/cmd:/usr/bin/vendor_perl:/usr/bin/core_perl
Por favor me ajude a entender por que isso está acontecendo dessa maneira. Obrigado
Você colocou o token *
glob no lugar errado, coloque if antes de :
enquanto estiver usando ##
(ou #
) para se livrar da parte da esquerda:
${PATH#*:} ## Non-greedy
${PATH##*:} ## Greedy