O que significa a saída de echo $-1
, echo $-2
, echo $-3
.. quer dizer?
Em uma das minhas caixas Linux, ele me mostra:
echo $-1
imsBEl1
echo $-2
imsBEl2
E em outra caixa do Linux, mostra:
echo $-1
himBH1
echo $-2
himBH2
Eles estão mapeando para alguns locais de memória ou alguma outra coisa?
Respostas:
POSIX definiu $ - como:
Portanto,
$-
pode haver uma base diferente no seu shell ou como você o chama.1
ou2
são um token separado aqui. Quando o shell$
vir aspas , ele identificará o início de qualquer candidato para expansão de parâmetro, substituição de comando ou expansão aritmética. Viu$-
e expandiu, deixando o resto inalterado.Você pode ver a seção Reconhecimento de token para obter mais detalhes.
fonte
echo $-
imprime opções do shell atual (sem-
prefixo).1
e2
são tokens não relacionados adicionais.fonte
Acrescentando à resposta de Miroslav:
Isso significa que essas são as opções para cada máquina, respectivamente.
Eu pesquisei o significado de cada bandeira e compilei os significados abaixo, com parafraseando menor.
fonte
Para expandir as respostas existentes, tente
echo "${-1}"
eecho "${-2}"
- você receberá um erro "Substituição incorreta" porque, em vez de usar-1
como nome de variável, o hífen é usado para substituir um valor se o nome da variável antes de ser indefinido. Por exemplo:fonte