Tại sao bash cần && để lặp lại một biến trên một dòng?


12

Tại sao SOMETHING=1 && echo $SOMETHINGcần &&phải quay lại 1
Tại sao không SOMETHING=1 echo $SOMETHINGtrở lại1


7
Xấu hổ về bất cứ ai hạ thấp câu hỏi của bạn, đặc biệt là không để lại phản hồi mang tính xây dựng. Đây là một câu hỏi hợp lệ và thứ tự bash thực hiện mở rộng từ / tham số / biến / dấu ngã và thực thi lệnh là khó khăn. Tôi đang cho bạn +1.
Spiff


về mặt kỹ thuật, "echo 1" trả về 0 và đầu ra là 1 ... có nghĩa là "echo" thoát với trạng thái "0" và hiển thị để xuất ra các đối số. Phrasing "trả về 1" cho tôi là ngụ ý "staus exit", không phải "output" và thoạt nhìn có chút khó hiểu.
michael

Câu trả lời:


8

Bởi vì bash không mở rộng biến trước khi diễn giải các câu lệnh gán biến. Vì vậy, vì SOMETHING chưa được xác định trước đó, nên lệnh của bạn trở thành LỚN

SOMETHING=1 echo ''

Sau đó được thực hiện.


Là mở rộng biến giống như thay thế biến?
Joel

1
@JoelL: Đúng
Gordon Davisson

0

xuất và lặp lại cùng một lúc

root@kali:~# echo ${SOMETHING=1}
1
root@kali:~# echo $SOMETHING
1
root@kali:~# unset SOMETHING
root@kali:~# echo $SOMETHING

root@kali:~# echo ${SOMETHING=1}
1
root@kali:~# 

Một ví dụ ngu ngốc khác xD

root@kali:~# echo ${SOMETHING=1} ${PLUS=+} ${SUMTHIN=2} ${EQUALS==} && expr $SOMETHING $PLUS $SUMTHIN
1 + 2 =
3
root@kali:~# 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.