thể trùng lặp:
Ternary operator (?:) in BashCó nội tuyến-nếu có gán (điều kiện ba năm) trong bash không?
Nếu đây là AS3 hoặc Java, tôi sẽ làm như sau:
fileName = dirName + "/" + (useDefault ? defaultName : customName) + ".txt";
Nhưng trong vỏ, điều đó dường như không cần thiết phức tạp, đòi hỏi một số dòng mã, cũng như khá nhiều mã lặp lại.
if [ $useDefault ]; then
fileName="$dirName/$defaultName.txt"
else
fileName="$dirName/$customName.txt"
fi
Bạn có thể nén tất cả thành một dòng, nhưng sự hy sinh đó rõ ràng vô cùng.
Có cách nào tốt hơn để viết nội tuyến if
có gán biến trong vỏ không?
Câu trả lời của William Purcell ít trực tiếp hơn của tôi, nhưng nếu giả định rằng '$ useDefault' kiểm soát việc sử dụng tên mặc định hay không, nó có thể là một giải pháp sạch hơn. –
Tôi đã cập nhật câu trả lời của mình để trích dẫn mọi thứ đúng cách. –