Tôi có đoạn script đơn giản sau:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {1..99..2}
do
echo $i
done
Đầu ra trong trường hợp tôi chạy với sh file.sh
:
Bash version ...
{1..99..2}
Đầu ra trong trường hợp tôi chạy với bash file.sh
:
Bash version 4.2.25(1)-release...
1
3
5
.
.
.
99
Tôi có hai truy vấn:
Nếu tôi đã viết một dòng chỉ định shabang, nó không nên chạy với bash cho dù tôi sử dụng
sh file.sh
haybash file.sh
?Tôi hiểu rằng
$BASH_VERSION
không được nhận ra bởi sh nhưng vấn đề với vòng lặp là gì? Tại sao không in số?
dash
, Như bạn nói cung cấpsh
trong Ubuntu, không có mặt chủ yếu "là một dấu nhắc khẩn cấp cho các trường hợp DIRE" mà thay vào đó, hệ thống có thể chạy và khởi động , nhanh . Bằng cách này,dash
rất thích hợp để sử dụng trong một hệ điều hành hiện đại, nhưng những gì nó cũng phù hợp cho là như một hồ sơ thấp, vỏ nhanh cho kịch bản - đặc biệt, chạy các kịch bản hệ thống khi khởi động một lớn, phức tạp, hệ điều hành hiện đại, với tối thiểu hiệu suất trên không.