Fish Shell:将格式化字符串设置为变量

问题描述

我想用同一服务器的多个实例打开终端。例如,csshX server1 server1 server1

我正在尝试将格式化的字符串列表分配给单个变量并在 csshX 中使用它。

#!/usr/local/bin/fish
set nmdat (echo 'server1 ' | string repeat -n (echo $countofinstance))
csshX $nmdat

但是,这无济于事。我也试过

csshX (echo 'server1 ' | string repeat -n (echo $countofinstance))

这不起作用。

解决方法

(echo $somevariable) 可以更简单地写成 $somevariable

试试这个:它应该向命令传递 count 个单独的参数:

set server server1
csshX (string repeat -n $count -N $server\n)

演示:

$ set count 5
$ set string foo

$ bash -c 'echo $#; printf \'%s\\n\' "$@"' bash (string repeat -n $count "$string ")
1
foo foo foo foo foo

$ bash -c 'echo $#; printf \'%s\\n\' "$@"' bash (string repeat -n $count $string\n)
6
foo
foo
foo
foo
foo

# with an extra newline

$ bash -c 'echo $#; printf \'%s\\n\' "$@"' bash (string repeat -n $count -N $string\n)
5
foo
foo
foo
foo
foo