Các công việc #!/bin/sh
có nghĩa là bạn đang viết mã cho một trong hai vỏ lịch sử Bourne (vẫn còn được tìm thấy trên một số hệ thống như Solaris tôi nghĩ), hoặc nhiều khả năng, ngôn ngữ shell tiêu chuẩn theo quy định của POSIX. Điều này có nghĩa là read -p
và echo -n
đều không đáng tin cậy.
Các giải pháp tiêu chuẩn/di động là:
printf 'Enter [y/n] : '
read -r opt
(Các -r
ngăn ngừa sự đối xử đặc biệt của \
, vì read
thường chấp nhận đó như là một tự tiếp tục dòng khi nó ở phần cuối của một dòng.)
Nếu bạn biết rằng tập lệnh của mình sẽ được chạy trên các hệ thống có Bash, bạn có thể thay đổi shebang thành #!/bin/bash
(hoặc #!/usr/bin/env bash
) và sử dụng tất cả các tính năng Bash ưa thích. (Nhiều hệ thống đã /bin/sh
symlinked để bash
để nó hoạt động một trong hai cách, nhưng dựa vào đó là thói quen xấu, và bash
thực sự vô hiệu hóa một số tính năng riêng của mình khi thực hiện dưới cái tên sh
.)
@Aaron Cám ơn định dạng bài đăng. Đó là bài viết đầu tiên của tôi. Tôi sẽ đảm bảo rằng các bài đăng khác của tôi được định dạng tốt. – user1263746
Bạn được chào đón :-) –