因此,根据to the docs,在多行上编写的命令将扩展为多个参数。这与bash行为不一致。例如
hello.lua:
QPixmap
鱼>
local msg = "Hello, world!"
return msg
失败 -
而redis-cli EVAL (cat hello.lua) 0
将在bash中取得成功。我的问题是如何阻止redis-cli EVAL "$(cat hello.lua)" 0
替换由于换行而分裂为多个参数?
答案 0 :(得分:3)
鱼与bash的“$(...)”没有直接相似之处。鱼当前最好的技术是操纵$IFS
,这是触发分裂的字符。你可以把它弄空:
set -l IFS
redis-cli EVAL (cat hello.lua) 0
这会将hello.lua
的全部内容作为单个参数传递。
假设您不希望自己的IFS更改,您可以将更改范围限定为函数或块:
begin
set -l IFS
redis-cli EVAL (cat hello.lua) 0
end