Linux Bash Shell lido com suporte a guias (\ t)
Há \topção para guia horizontal emecho
wolf@linux:~$ echo hello hello wolf@linux:~$
wolf@linux:~$ echo -e '\thello' hello wolf@linux:~$
Existe alguma opção semelhante em read?
wolf@linux:~$ read -p 'hello ' hello wolf wolf@linux:~$
wolf@linux:~$ read -p '\thello ' \thello wolf wolf@linux:~$
Resultado Desejado
wolf@linux:~$ read -p '\thello ' <- need something to produce something like tab or `\t` in `echo` hello wolf wolf@linux:~$
Respostas
Você sempre pode usar a $'...'forma de aspas no estilo ksh93 que entende essas sequências de escape:
IFS= read -r -p $'\thello ' var
( IFS=e -rnão são relevantes, estou apenas adicionando-os aqui, pois chamar readsem eles raramente faz sentido).
Observe que -pnão é uma shfunção padrão . Em ksh / zsh, -pé para ler o co-processo e os prompts são especificados com read 'var?Prompt: '. É uma pena que bashoptou por introduzir uma API incompatível aqui. No -pentanto, você não precisa usar , você pode simplesmente fazer de forma portátil:
printf >&2 '\thello '
IFS= read -r var
printfreconhece essas sequências de escape em seu argumento de formato e argumentos para %bespecificadores. Se os echoreconhece (ou aceita uma -eopção para reconhecê-los) depende da implementação e para muitas implementações (incluindo basho embutido) no tempo de construção e nas configurações de tempo de execução, portanto, é melhor evitar .
Você sempre pode simplesmente adicionar 8 espaços:
read -p ' hello '
Mas sim, você também pode obter um caractere de tabulação real:
read -p $'\t''hello '
Ou
read -p "$(echo -e '\thello ')"
Ou
read -p "$(printf '\thello ')"