Tiga trik untuk mendapatkan dua perintah output dalam baris tunggal. Biasanya dua output perintah akan selalu dipisahkan oleh carriage return di terminal Linux.
Salah satu rintangan utama dalam pembuatan skrip adalah membuat output Anda diformat dengan baik sesuai dengan persyaratan. Di Linux/Unix setiap perintah stdout outputnya selalu di baris baru. Ini adalah rintangan dalam banyak situasi di mana pembuat kode menginginkan dua keluaran, dua istilah, dua variabel dalam satu baris misalnya format CSV. Dalam posting ini, kita akan melihat bagaimana menampilkan dua atau lebih output perintah dalam satu baris.
Baca juga :Membuat Script Posting Terkait
Biasanya ketika kita menjalankan lebih dari satu perintah, mereka akan menampilkan output dalam baris yang berbeda:
# date ; hostname Sat Dec 24 01:35:50 EDT 2016 testsrv2 # echo text1; echo text2; echo text3 text1 text2 text3
Dalam contoh di atas, perintah memiliki output per baris. Kami akan menyelesaikan semua output dalam satu baris menggunakan trik di bawah ini.
Trik 1:
Menggunakan fungsi terjemahan. Seperti yang saya katakan sebelumnya, setiap output perintah disertai dengan carriage return. Kami akan menerjemahkan carriage return dengan karakter tab sehingga mendapatkan dua atau lebih output perintah dalam satu baris.
# (date; hostname) |tr '\n' '\t' Sat Dec 24 01:36:22 EDT 2016 testsrv2 # (echo text1; echo text2; echo text3) |tr '\n' '\t' text1 text2 text3
Melewati output untuk menerjemahkan fungsi, kami mencapai output baris tunggal. Di sini kami menginstruksikan tr
berfungsi untuk menerjemahkan semua carriage return (\n
) ke tab (\t
).
Jika Anda ingin menampilkan dalam format CSV (nilai yang dipisahkan koma) kemudian ganti tab dengan koma dan Anda akan mendapatkannya.
# (date; hostname) |tr '\n' ',' Sat Dec 24 01:43:09 EDT 2016,testsrv2, # (echo text1; echo text2; echo text3) |tr '\n' ',' text1,text2,text3,
Anda dapat mengamati satu koma tambahan yang menunjukkan setiap keluaran perintah diakhiri dengan \n dan karenanya diganti dengan ,
Trik 2:
Dengan mendefinisikan setiap keluaran perintah sebagai variabel. Di sini kita akan menyimpan output dari setiap perintah dalam satu variabel dan kemudian kita akan menggemakan variabel tersebut dalam satu baris.
# mydate=`date` # myname=`hostname` # echo $myname $mydate testsrv2 Sat Dec 24 01:46:04 EDT 2016
Di sini kami menyimpan output perintah tanggal dan nama host di mydate
dan myname
variabel. Pada perintah terakhir, kami menggemakan kedua variabel dengan spasi di antaranya. Perhatikan bahwa output perintah dapat disimpan dalam variabel dengan mengeksekusi perintah menggunakan backticks (eksekusi in-line)!
Trik 3:
Dengan menggemakan keluaran eksekusi sebaris. Eksekusi in-line yaitu menggunakan backticks untuk menjalankan perintah dalam perintah lain. Kami akan menggunakan trik ini untuk menggemakan output dalam satu baris.
# echo "`date` `hostname`" Sat Dec 24 01:50:36 EDT 2016 testsrv2
Pada contoh di atas, pertama, kita telah menjalankan perintah dan mendapatkan output. Tetapi output tersebut dimasukkan ke dalam perintah echo. Oleh karena itu echo perintah stdout mereka dalam satu baris.
# echo "`echo text1` `echo text2` `echo text3`" text1 text2 text3
Catat bahwa kami menjalankan setiap perintah dalam tanda kutip back tick yang terpisah.