以下是我想說明的一個簡單測試用例。變量擴展在zsh中與bash中的變量不同
在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
但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
在上面zsh的最後一行,給了我下面的錯誤
ls: invalid option -- ' '
Try `ls --help' for more information.
我想的zsh正在執行
ls "-a -l"
這是我得到同樣的錯誤。
那麼,我該如何得到bash的行爲呢?
我不確定我是否清楚,請告訴我是否有您想要知道的事情。
這不回答你的問題,但我認爲這是更好的:'F(){LS 「$ @」; }; f -a -l' –
@glenn,是的,絕對是。正如我所說的,這只是一個更大的問題的例子,我必須使用args變量。 –
@ShrikantSharat如果您正在爲bash和zsh(和ksh)編寫腳本,請不要使用'args'變量來執行此操作。改用數組。 – Gilles