Câu trả lời:
Một câu hỏi tương tự đã được trả lời gần đây : các ký hiệu được đánh giá trong dòng trước khi ký hiệu được xác định trong dòng này, khiến cần phải phân tách định nghĩa và sử dụng các ký hiệu để phân tách các dòng.
Được nhắc nhở bởi một bình luận, bạn có thể đã làm điều này:
foo=bar bash -c 'echo $foo'
cái đầu tiên gán một giá trị cho foo
và chuyển nó vào một quy trình mới dưới dạng một biến môi trường nơi nó có thể được in.
Bạn có thể đọc thêm về nó trong nhận dạng mã thông báo ngôn ngữ lệnh POSIX Shell .
Theo dõi từ bình luận @mikeerv :
Shell sẽ đọc đầu vào của nó theo các dòng từ một tệp, từ một thiết bị đầu cuối trong trường hợp vỏ tương tác hoặc từ một chuỗi trong trường hợp sh -c hoặc system ().
Khi mã thông báo được phân định, nó được phân loại theo yêu cầu của ngữ pháp trong Shell Grammar.
@username...comment
người dùng mà bạn chỉ định sẽ nhận được một tin nhắn nhỏ cho họ biết bạn đang nói chuyện với họ. tốt, họ sẽ nếu chủ đề của nó liên quan.
luit.c
và tôi nghĩ rằng tôi chỉ có thể thay đổi setup_io(){ ... ;fnctl(0, [GS]ETFL, 0);...}
để làm 2
cho đối số đầu tiên. tốt, tôi đoán rằng copyTermios()
và các setRawTermios()
chức năng có thể cần một chút sửa đổi, nhưng nó sẽ đơn giản, tôi nghĩ vậy. các rc = (return)
cho mỗi dòng có vẻ lạ - nhưng tôi không có lập trình C trong hai. đó là thứ của bạn hay được thừa hưởng? và nếu bình luận trống của bạn đề cập đến "${set_null_var:=new val and $(echo other stuff)}"
bạn hầu như an toàn với bất cứ điều gì. một số vỏ sẽ làm những thứ kỳ lạ với }
.
env foo=bar bash -c 'echo $foo'