Saya menerima kesalahan:
bash: kesalahan sintaksis dekat token tak terduga `; '
karena perintah berikut:
evince foo.pdf bar.pdf &; emacs foo.tex &
Apakah ilegal memisahkan perintah dengan ;
ketika menggunakan &
latar belakang pekerjaan? Atau adakah alasan lain mengapa ini tidak berhasil?
Terima kasih.
if [ $(ps -ef |grep -c '[p]grep') -eq 0 ]; then nohup sleep 5 > /dev/null 2>&1</dev/null & fi
BTW, masalah intinya adalah bahwa shell (diturunkan dari turunan) tidak mengijinkan perintah kosong.
";" dan "&" adalah terminator perintah, yang berarti masing-masing fg dan bg. Jadi ";;" (atau ";" di awal baris) juga tidak valid.
(Baris baru menyiratkan ";" jika ada perintah yang belum dihentikan, kecuali jika Anda menggunakan "\" untuk melanjutkan baris.)
Bahasa sangat bervariasi dalam kebijakan ini:
Bahasa turunan C memungkinkan pernyataan kosong.
Pascal dan PERL memiliki separator, bukan terminator.
sumber
Tidak, ini hanya membingungkan dan tidak bisa mengerti maksud Anda.
Anda perlu mengelompokkan & dengan perintah yang ingin Anda letakkan di latar belakang:
Itu bekerja dengan baik. Yang lebih eksplisit adalah:
Terutama jika Anda kemudian ingin rantai lebih banyak perintah setelah akhir juga.
sumber