Sau đây là một trường hợp thử nghiệm đơn giản cho những gì tôi muốn minh họa.Mở rộng biến khác nhau trong zsh từ đó trong bash
Trong bash,
# define the function f
f() { ls $args; }
# Runs the command `ls`
f
# Runs the fommand `ls -a`
args="-a"
f
# Runs the command `ls -a -l`
args="-a -l"
f
Nhưng trong zsh
# define the function f
f() { ls $args }
# Runs the command `ls`
f
# Runs the fommand `ls -a`
args="-a"
f
# I expect it to run `ls -a -l`, instead it gives me an error
args="-a -l"
f
Dòng cuối cùng trong zsh trên trên, mang lại cho tôi những lỗi sau
ls: invalid option -- ' '
Try `ls --help' for more information.
Tôi nghĩ zsh đang thực hiện
ls "-a -l"
là khi tôi gặp lỗi tương tự.
Vì vậy, làm cách nào để nhận được hành vi của bash tại đây?
Tôi không chắc chắn nếu tôi rõ ràng, hãy cho tôi biết nếu có điều gì đó bạn muốn biết.
Điều này không trả lời câu hỏi của bạn, nhưng tôi nghĩ điều này tốt hơn: 'f() {ls" $ @ "; }; f -a -l' –
@glenn, Vâng, chắc chắn là vậy. Như tôi đã nói, đây chỉ là một minh họa của một vấn đề lớn hơn tôi có, nơi tôi phải sử dụng biến args. –
@ShrikantSharat Nếu bạn đang viết kịch bản cho bash và zsh (và ksh), đừng làm điều này với biến 'args'. Sử dụng một mảng thay thế. – Gilles