如何不将命令替换扩展为多个参数

时间:2015-07-18 13:28:49

标签: shell fish

因此,根据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替换由于换行而分裂为多个参数?

1 个答案:

答案 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