我有一个bash脚本如下:
#!/bin/bash # create-multiple-chapters {1..5} # create-multiple-chapters {1,2,5} for i in $*; do mkdir chapter${i} touch chapter${i}/init.adoc done
它用文件创建多个目录。我 understand 该fish不支持{x.y.}范围扩展语法。不过,这是一个bash脚本。当我运行这个脚本时 create-multiple-chapters {1..5} ,它只创建一个名为 chapter{1..5} 。为什么?
create-multiple-chapters {1..5}
chapter{1..5}
问题是你认为 {1..5} 由脚本的这一行展开:
{1..5}
for i in $*; do
事实上,这是一个错误的假设。当你的智能外壳是Bash,并且你输入 create-multiple-chapters {1..5} 在命令行,是交互式shell本身进行扩展,并将命令行转换为 create-multiple-chapters 1 2 3 4 5 。然后,Bash脚本处理循环中这五个参数中的每一个。
create-multiple-chapters 1 2 3 4 5
鱼不能做这种扩展。相反,如果您正在运行鱼,则需要使用 seq 命令进行扩展,并将扩展后的参数传递给Bash脚本。
seq