Linux Bash Shell, sekme destekli okuma (\ t)
İçinde \tyatay sekme seçeneği varecho
wolf@linux:~$ echo hello hello wolf@linux:~$
wolf@linux:~$ echo -e '\thello' hello wolf@linux:~$
İçinde benzer bir seçenek var readmı?
wolf@linux:~$ read -p 'hello ' hello wolf wolf@linux:~$
wolf@linux:~$ read -p '\thello ' \thello wolf wolf@linux:~$
Istenilen çıktı
wolf@linux:~$ read -p '\thello ' <- need something to produce something like tab or `\t` in `echo` hello wolf wolf@linux:~$
Yanıtlar
Bu $'...'kaçış dizilerini anlayan ksh93 tarzı alıntı biçimini her zaman kullanabilirsiniz :
IFS= read -r -p $'\thello ' var
( IFS=ve -ralakalı değil, sadece onları buraya ekliyorum çünkü readonlarsız arama nadiren mantıklı geliyor)
Bunun -pstandart bir shişlev olmadığını unutmayın . Ksh / zsh, -portak işlemden okumaktır ve istemler ile belirtilir read 'var?Prompt: '. Burada bashuyumsuz bir API sunmayı seçen talihsiz bir durum . -pYine de kullanmak zorunda değilsin , sadece taşınabilir bir şekilde yapabilirsin:
printf >&2 '\thello '
IFS= read -r var
printfbiçim bağımsız değişkeninde bu kaçış dizilerini ve %bbelirticiler için bağımsız değişkenleri tanır . İster echoonları tanır (veya kabul -etanıyabilmesi için seçenek) uygulanmasına bağlıdır ve (dahil birçok uygulamaları için bashinşa süresi ve çalışma zamanı ayarlara 'ın yerleşiğini), böyledir iyi kaçınılmalıdır .
Her zaman basitçe 8 boşluk ekleyebilirsiniz:
read -p ' hello '
Ama evet, gerçek bir sekme karakteri de elde edebilirsiniz:
read -p $'\t''hello '
Veya
read -p "$(echo -e '\thello ')"
Veya
read -p "$(printf '\thello ')"