Linux Bash Shell dibaca dengan dukungan tab (\ t)
Ada \topsi untuk tab horizontal diecho
wolf@linux:~$ echo hello hello wolf@linux:~$
wolf@linux:~$ echo -e '\thello' hello wolf@linux:~$
Apakah ada opsi serupa read?
wolf@linux:~$ read -p 'hello ' hello wolf wolf@linux:~$
wolf@linux:~$ read -p '\thello ' \thello wolf wolf@linux:~$
Output yang Diinginkan
wolf@linux:~$ read -p '\thello ' <- need something to produce something like tab or `\t` in `echo` hello wolf wolf@linux:~$
Jawaban
Anda selalu dapat menggunakan $'...'bentuk tanda kutip gaya ksh93 yang memahami urutan pelolosan tersebut:
IFS= read -r -p $'\thello ' var
( IFS=dan -rtidak relevan, saya hanya menambahkannya di sini sebagai panggilan readtanpa mereka jarang masuk akal).
Perhatikan bahwa -pitu bukan shfungsi standar . Dalam ksh / zsh, -padalah membaca dari proses bersama dan prompt ditentukan dengan read 'var?Prompt: '. Sangat disayangkan bashmemilih untuk memperkenalkan API yang tidak kompatibel di sini. Anda tidak harus menggunakan -p, Anda bisa melakukannya dengan mudah:
printf >&2 '\thello '
IFS= read -r var
printfmengenali urutan escape tersebut dalam argumen formatnya, dan argumen untuk %bpenentu. Apakah echomengenalinya (atau menerima -eopsi untuk mengenalinya) bergantung pada implementasi dan untuk banyak implementasi (termasuk bashbawaan) pada pengaturan waktu pembuatan dan runtime, jadi sebaiknya dihindari .
Anda selalu dapat menambahkan 8 spasi:
read -p ' hello '
Tapi ya, Anda juga bisa mendapatkan karakter tab yang sebenarnya:
read -p $'\t''hello '
Atau
read -p "$(echo -e '\thello ')"
Atau
read -p "$(printf '\thello ')"