Saya memiliki skrip sederhana berikut:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {1..99..2}
do
echo $i
done
Output jika saya menjalankan sh file.sh
:
Bash version ...
{1..99..2}
Output jika saya menjalankan bash file.sh
:
Bash version 4.2.25(1)-release...
1
3
5
.
.
.
99
Saya punya dua pertanyaan:
Jika saya telah menulis shell shabang line yang menentukan, tidakkah seharusnya dijalankan dengan bash apakah saya menggunakan
sh file.sh
ataubash file.sh
?Saya mengerti bahwa
$BASH_VERSION
tidak dikenali oleh sh tetapi apa masalah dengan untuk loop? Mengapa tidak mencetak angka?
sumber
dash
, Yang seperti yang Anda katakan menyediakansh
di Ubuntu, tidak hadir terutama "menjadi prompt darurat untuk keadaan DIRE" tetapi sebaliknya sehingga sistem dapat berjalan, dan mulai , cepat . Dengan cara ini,dash
sangat cocok untuk digunakan dalam OS modern, tetapi apa yang cocok untuk itu adalah sebagai shell profil rendah, cepat untuk skrip - terutama, menjalankan skrip sistem saat boot OS besar, kompleks, modern, dengan minimal overhead kinerja.sh
cukup terus-menerus, dan khususnya secara intensif ketika Ubuntu melakukan boot. Ini terutama penting untuk penggunaan skrip otomatisnya, dan itu adalah kasus penggunaan yang sangat penting di Ubuntu. (Jika Anda adalah untuk menghapus yang/bin/sh
symlink - sehingga, pada dasarnya, akan ada "tidak ada SH" - hal-hal yang akan sangat salah: Ubuntu tidak bisa boot ke kondisi yang berguna.)