Contoh Anda luar biasa,% dikelilingi oleh tanda kutip ganda, sederhana dan kembali. Meninggalkan harapan bahwa kutipan yang lolos bisa bekerja.
tuxayo
Jawaban:
126
Anda harus melarikan diri dari %pertanda. Mereka memiliki arti khusus dalam crontab:
man (5) crontab:
Percent-signs (%) in the command, unless escaped with backslash (\),
will be changed into newline characters, and all data after the
first % will be sent to the command as standard input.
+1 Sangat menarik, saya juga tidak tahu itu. Terkejut saya belum mengalami ini.
Kyle Smith
3
Yah saya baru saja mengalami ini. Saya menggunakan date +%Fdan mendapatkan tempat
adamo
2
Apakah sintaks ini memiliki kegunaan yang bermanfaat? Dengan SHELL=/bin/bash, saya selalu dapat menulis ulang cat %Hello worldsebagai cat <<<'Hello world'. Saya tidak melihat perlunya sintaksis khusus.
Witiko
@Witiko Jika "sintaks khusus" yang Anda tanyakan adalah backslash untuk melarikan diri persen, maka pertanyaan OP sendiri adalah contoh di mana diperlukan: argumen perintah yang memerlukan persen, terutama program tanggal, yang akan cukup populer di perintah crontab. Jika Anda benar-benar bertanya mengapa cron memiliki gotcha ini di tempat pertama: yaitu: mengganti linefeed di tempat persen, maka saya kira begitu Anda dapat memasok, pada satu baris yang diperlukan crontab, "perintah" yang terdiri dari dua atau lebih banyak perintah tambahan.
gwideman
Yang terakhir. Dan, seperti yang saya sebutkan, orang dapat melakukan hal yang sama dengan bash. Tidak perlu membuang sintaks Cron.
Witiko
7
Ini tidak langsung menjawab pertanyaan Anda, tetapi saya sarankan Anda membuat file skrip di / usr / local / bin (atau ~ / bin atau apa pun yang sesuai) dan menyebutnya dari cron. Lebih mudah untuk menguji dan mengedit.
Dalam pengalaman saya, jauh lebih mudah untuk mempertahankan 50 baris dalam crontab daripada mempertahankan 50 file kecil. Anda tentu ingin mengubah skrip yang lebih panjang menjadi file skrip, tetapi melakukannya untuk one-liners mungkin merupakan kerja keras.
Jawaban:
Anda harus melarikan diri dari
%
pertanda. Mereka memiliki arti khusus dalam crontab:sumber
date +%F
dan mendapatkan tempatSHELL=/bin/bash
, saya selalu dapat menulis ulangcat %Hello world
sebagaicat <<<'Hello world'
. Saya tidak melihat perlunya sintaksis khusus.Ini tidak langsung menjawab pertanyaan Anda, tetapi saya sarankan Anda membuat file skrip di / usr / local / bin (atau ~ / bin atau apa pun yang sesuai) dan menyebutnya dari cron. Lebih mudah untuk menguji dan mengedit.
sumber