GNU/Linux >> Belajar Linux >  >> Linux

Bash - Perintah tanggal dan spasi

Pendekatan yang benar adalah dengan mendefinisikan fungsi Anda sendiri di dalam skrip Bash Anda.

function my_date {
  date "+%y-%m-%d %H:%M:%S"
}

Sekarang Anda dapat menggunakan my_date seolah-olah itu adalah program eksternal.

Misalnya:

echo "It is now $(my_date)."

Atau sederhananya:

my_date

Mengapa pendekatan Anda tidak berhasil?

Masalah pertama adalah tugas Anda rusak.

DATE_COMMAND="date "+%y-%m-%d %H:%M:%S""

Ini diuraikan sebagai penugasan dari string date +%y-%m-%d ke variabel DATE_COMMAND . Setelah kosong, shell mulai menginterpretasikan simbol yang tersisa dengan cara yang tidak Anda inginkan.

Ini dapat diperbaiki sebagian dengan mengubah kutipan.

DATE_COMMAND="date '+%y-%m-%d %H:%M:%S'"

Namun, ini tidak benar-benar menyelesaikan masalah karena jika sekarang kita menggunakan

echo $($DATE_COMMAND)

Itu tidak akan memperluas argumen dengan benar. date program akan melihat argumen '+%y-%m-%d dan %H:%M:%S' (dengan tanda kutip) alih-alih satu string. Ini dapat diselesaikan dengan menggunakan eval seperti pada

DATE_COMMAND="date '+%y-%m-%d %H:%M:%S'"
echo $(eval $DATE_COMMAND)

di mana variabel DATE_COMMAND pertama kali diperluas ke string date '+%y-%m-%d %H:%M:%S' yaitu eval uated seolah-olah ditulis seperti itu sehingga memanggil date dengan benar.

Perhatikan bahwa saya hanya menunjukkan ini untuk menjelaskan masalahnya. eval bukan solusi yang baik di sini. Gunakan fungsi sebagai gantinya.

PS Lebih baik menghindari string pengidentifikasi huruf besar semua karena sering bertentangan dengan variabel lingkungan atau bahkan memiliki makna ajaib pada shell.


Melarikan diri dari ruang bekerja untuk saya.

echo `date +%d.%m.%Y\ %R.%S.%3N` 

Linux
  1. Perbedaan Antara ' Dan ” Di Command Line (bash)??

  2. Perintah Sejarah Menampilkan Direktori Dan Tanggal?

  3. perintah ekspor bash

  1. Tetapkan Tanggal dan Waktu untuk Setiap Perintah yang Anda Jalankan di Bash History

  2. perintah eval di Bash dan kegunaannya yang khas

  3. Apa perbedaan antara &> dan >&di bash?

  1. Perintah Bash trap Dijelaskan

  2. Apakah Ruang Diizinkan Antara #! Dan /bin/bash Di Shebang?

  3. Perbandingan tanggal di Bash