有效的是什么
现在我想要编写一个脚本,允许定义两个或四个URL,并生成上述命令。
目前我拥有的是:
当使用两个URL运行时,结果是
我猜问题要么在
vimdiff -c 'set diffopt+=iwhite' <(curl -sS '...') <(curl -sS '...')
现在我想要编写一个脚本,允许定义两个或四个URL,并生成上述命令。
目前我拥有的是:
#!/bin/bash
args=(-c 'set diffopt+=iwhite')
while [ -n "$1" ]; do
args+=(<(curl -sS "$1"))
shift
done
vimdiff "${args[@]}"
当使用两个URL运行时,结果是
vimdiff
显示两个没有内容且底部具有相同文件名的标签,例如"/proc/20228/fd/63"。换句话说,进程替代似乎没有被应用和/或错误,因为我至少希望在文件名中看到两个不同的文件描述符。我猜问题要么在
args+=...
行,要么在最后一行。
for i in "$@"; do ... done
循环。完全取决于你,但避免了在没有数组的POSIX shell中通常使用的额外shift
。 - undefined<(curl -sS "$1")
在args+=
参数中被展开,并且不等待vimdiff "${args[@]}"
命令。在该命令之前转储args
数组以进行检查,例如declare -p args
。你应该将命令分开,如vimdiff "${args[@]}" <(curl -sS "$file1") <(curl -sS "$file2")
,以确保进程替换不会提前发生。 - undefinedvimdiff
将你的<curl ...
作为参数接收。 - undefined