Nếu tôi hiểu chính xác những gì bạn đang cố gắng làm, bạn có đặt sudo
lệnh đó vào tập lệnh và mong đợi tập lệnh sẽ nhắc mật khẩu của bạn khi nó chạy ở đó không? Trong trường hợp đó bạn chỉ đang làm mọi thứ theo cách phức tạp.
Một giải pháp sạch hơn là viết kịch bản theo cách thông thường (nghĩa là không có sudo
) và chạy nó dưới dạng siêu người dùng . Lý do đằng sau điều này là, nếu tập lệnh cần quyền truy cập siêu người dùng, thì chỉ cần cấp cho nó quyền truy cập (tại sao phải đợi cho đến khi có lệnh nào đó?). Trong tập lệnh, để kiểm tra xem nó có đang được chạy dưới quyền root hay không, hãy làm một cái gì đó như thế này:
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
/dev/null
- bạn đang mắc lỗi vìdd
cần quyền truy cập bằng văn bản/dev/r$temp1
(tôi giả sử). Bạn sẽ cần phải làm điều đó cho dù bạn ngăn chặndd
đầu ra của bạn như thế nào ; chuyển hướng đầu ra đến/dev/null
không yêu cầu root