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 read
hoặ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 cat
và bash <<< cat
là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 -c
cũ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
để abc
và $2
để def
bên trong some command
.