bash -c 'some command'giữ quyền truy cập vào đầu vào tiêu chuẩn của người gọi, vì vậy readhoặc các lệnh đọc từ đầu vào tiêu chuẩn sẽ hoạt động bình thường. bash <<< 'some command'thay thế đầu vào đó bằng dòng được truyền vào, bash -c catvà bash <<< catlàm những việc khác nhau.
$ bash -c cat
abc
abc
^D
$ bash <<< cat
$
Mặt khác, bạn có thể sử dụng tính năng đó để cung cấp đầu vào tiêu chuẩn của riêng bạn để sử dụng thông qua $'...', nếu bạn rất cẩn thận:
$ bash <<< $'read x y\nabc def ghi\necho $y'
def ghi
$
Tôi sẽ không muốn dựa vào điều đó, nhưng đôi khi nó có thể thuận tiện.
bash -ccũng cho phép các đối số được truyền vào tập lệnh và $0được đặt:
bash -c 'some command' sh abc def
sẽ thiết lập $1để abcvà $2để defbên trong some command.