linux - 从 bash 创建多个用户命名和编号的文件而不循环

标签 linux bash createfile

全新的 bash 编程并遇到了这样的问题:

应创建 N 个空文件。文件总和 N 以及文件名应由用户通过命令行提供。 不应使用循环和 getopts。

我已经尝试过从谷歌找到的类似的东西,但它不起作用。我对 linux 和 windows bash 脚本感到困惑。希望有人能帮我解决这个问题。谢谢!

#!/bin/bash
echo $N
:start
if [ $N > 0 ] 
  then
    touch xyzfile_$N
    $N = $N - 1
  pause
  goto start

else
  then 
    echo "no data will be created"
fi

命令行和结果应如下所示(例如,如果 N=7):

命令行:

./createfiles -n filename 7

预期结果:

filename_1,filename_2,filename_3...filename_7

最佳答案

您可以使用递归 shell 函数执行此操作:

fn() {
    # add some sanity checks to check parameters
    touch "$1_${2}"
    (($2 > 1)) && fn "$1" $(($2 - 1))
}

这部分是递归调用:

(($2 > 1)) && fn "$1" $(($2 - 1))

只要 $2 大于 1,它基本上通过从第二个参数减 1 来调用自身。

然后将其命名为:

fn filename 7

它将创建 7 个文件:

filename_1  filename_2  filename_3  filename_4  filename_5  filename_6  filename_7

关于linux - 从 bash 创建多个用户命名和编号的文件而不循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57952888/

相关文章:

linux - 汇编部门和 float

python - 在Python中执行类似于Linux中的curl的URL - JenkinsAPI

linux - BASH 遍历文件夹和文件

linux - 从命令列表中调用 shell 命令,直到所有命令都已完成

windows - 为什么此 CreateFile() 调用会导致 Windows 8 出现蓝屏?

linux - 如何在 Linux 上使用 bash 增加文本文件中的浮点值?

bash - 在 GCP 实例上运行 gcloud 不能通过 ssh 运行,但可以在实例上运行

python - shell脚本在后台运行的进程没有输出

android - 安装apk时,如何使apk在sdcard上创建文件?

javascript - 在 Node 中使用命令行创建文件