Từ man bash
:
A simple command is a sequence of optional variable assignments followed by blank-separated words and redirections, and terminated by a control operator. The first word specifies the command to be executed, and is passed as argument zero. The remaining words are passed as arguments to the invoked command.
Vì vậy, nó hoàn toàn hợp pháp để viết:
foo=bar echo $foo
nhưng nó không hoạt động như tôi mong đợi (nó chỉ in một dòng mới). Nó khá lạ đối với tôi kể từ:
$ foo=bar printenv
foo=bar
TERM=rxvt-unicode
[...]
Ai đó có thể vui lòng giải thích cho tôi nơi tôi đang làm sai?
foo=bar eval 'echo eval sees $foo'; echo echo sees $foo
(ở đây, kể từ khi$foo
được mở rộng trongeval
lệnh, giá trị sẽ được thay thế ở đó, nhưng không phải cho lệnh echo tiếp theo).