Aku punya ini:
date +"%H hours and %M minutes"
Saya menggunakan festival untuk mengatakannya .. tetapi dikatakan seperti: "nol sembilan jam" .. Saya ingin mengatakan "sembilan jam"!
tapi kencan selalu memberi saya 09 ... jadi saya ingin tahu apakah bash dapat dengan mudah menjadikannya hanya 9?
dalam naskah yang kompleks saya mencoba seperti
printf %d 09
tapi gagal .. bukan oktal :(
ada ide?
bash
shell
date
arithmetic
Kekuatan Aquarius
sumber
sumber
Jawaban:
Dalam kasus Anda, Anda dapat dengan mudah menonaktifkan zero padding dengan menambahkan
-
setelah%
dalam format string tanggal:%-H
Lihat manual tanggal
Jika Anda ingin menafsirkan angka di pangkalan yang berbeda, dalam bash
Jadi, untuk menafsirkan angka sebagai desimal, gunakan
10#n
formulir, misalnya.10#09
Lihat bagian Evaluasi Aritmatika dari manual bash.
sumber
echo $((011)) $((10#011))
adalah contoh bagus lain yang keluar9 11
lat=048 ; latd=${lat#0} ; echo $((latd-1))
berfungsi, tetapilat=-048 ; latd=${lat#0} ; echo $((latd-1))
tidak.plus=$((10#01))
Jika Anda mencoba melakukan perbandingan dalam desimal dengan nilai tanggal, saya menemukan metode ini sangat efektif:
Itu selalu menghasilkan nilai desimal. Jadi saya bisa melakukan ini:
Tidak ada masalah dengan 08 atau 09 dengan cara ini. Menggunakan% 10 bukannya% 100 memberi Anda rentang sepuluh menit dari 0 hingga 9. Saya juga menemukan yang berikut ini memberikan nilai desimal, tanpa memimpin nol:
sumber
Portable, Anda dapat dengan mudah menghapus sebuah pemimpin
0
dari variabel. Ini membuat variabel tidak berubah jika tidak ada yang memimpin0
.Di bash, ksh atau zsh, Anda dapat menggunakan pola glob tambahan ksh untuk menghapus sejumlah pemimpin
0
. Di bash, jalankanshopt -s extglob
dulu. Di zsh, jalankansetopt kshglob
dulu.sumber
Secara umum dalam bash:
yang menghasilkan
Atau berbeda:
Saya terkejut bahwa tanggal tidak memiliki opsi format yang sesuai.
sumber