linux - 从bash创建多个用户命名和编号的文件而不循环
问题描述
在 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
推荐阅读
- apache-spark - 带有函数的pySpark withColumn
- regex - 与变量一起使用时,大括号扩展不起作用
- java - 在 sqlite ROOM 数据库中选择查询耗时超过 30 秒
- javascript - 如何以角度过滤表格数据
- c++ - RTMP_Init “分段错误”
- c# - 如何禁用一个按钮,直到在 WPF MVVM 中单击另一个按钮
- python - Python contains 和 icontains 都返回不区分大小写的结果
- arrays - 有没有办法在 Python 中增加一个数组元素?(就像在 C 中如何使用指针算术一样?)
- python - 使用 Jupyter Notebook 和 Python3.8 获取 NotImplementedError
- javascript - 基于相邻单元格值的 B 表 tdClass