Lebih
Bagaimana untuk cat file yang berisi kode?
Saya ingin mencetak kode ke dalam file menggunakan kucing <<EOF >>
:
cat <<EOF >> brightup.sh
!/bin/bash
curr=`cat /sys/class/backlight/intel_backlight/actual_brightness`
if [ $curr -lt 4477 ]; then
curr=$((curr+406));
echo $curr > /sys/class/backlight/intel_backlight/brightness;
fi
EOF
tapi ketika saya cek file output, saya mendapatkan ini:
!/bin/bash
curr=1634
if [ -lt 4477 ]; then
curr=406;
echo > /sys/class/backlight/intel_backlight/brightness;
fi
Aku mencoba menempatkan tanda kutip tunggal tetapi output juga membawa tanda kutip tunggal dengan itu. Bagaimana saya bisa menghindari masalah ini?
79
3
Anda hanya perlu sedikit perubahan; single-quote di sini-dokumen pembatas setelah
<<
.atau ekuivalen backslash-melarikan diri itu:
Tanpa mengutip, berikut dokumen akan menjalani substitusi variabel, backticks akan dievaluasi, dll, seperti yang anda temukan.
Jika anda perlu untuk memperluas beberapa, tapi tidak semua, nilai-nilai, anda perlu untuk secara individual melarikan diri orang-orang yang anda ingin mencegah.
Atau, menggunakan EOF spidol, anda perlu untuk penawaran awal penanda agar perluasan tidak't harus dilakukan:
IHTH
Ini harus bekerja, aku hanya diuji dan bekerja seperti yang diharapkan: tidak ada ekspansi, substitusi, atau apa-yang-anda berlangsung.
Menggunakan berikut juga bekerja.