从 bash 创建多个用户命名和编号的文件而不循环
creating multiple user named and numbered files without loop from bash
完全是 bash 编程的新手,遇到了这样的问题:
应创建 N 个空文件。文件总和 N 以及文件名应由用户通过命令行提供。
不应使用循环和 getopts。
我已经尝试过从 google 中找到的类似方法,但它不起作用。我对 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)) && fn "" $(( - 1))
}
这部分是递归调用:
(( > 1)) && fn "" $(( - 1))
只要 </code> 大于 <code>1
.
,它基本上通过从第二个参数减 1 来调用自身
那就叫它为:
fn filename 7
它将创建 7 个文件:
filename_1 filename_2 filename_3 filename_4 filename_5 filename_6 filename_7
我用这样的 for 循环结束了这个问题:
createfile() {
name=""
num=""
for((i=1;i<=num;i++))
do
touch "_${i}"
done
}
createfile
实际上效果很好。现在我尝试用 getopts
解决问题,似乎函数调用在 case 选项
中不起作用
完全是 bash 编程的新手,遇到了这样的问题:
应创建 N 个空文件。文件总和 N 以及文件名应由用户通过命令行提供。 不应使用循环和 getopts。
我已经尝试过从 google 中找到的类似方法,但它不起作用。我对 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)) && fn "" $(( - 1))
}
这部分是递归调用:
(( > 1)) && fn "" $(( - 1))
只要 </code> 大于 <code>1
.
那就叫它为:
fn filename 7
它将创建 7 个文件:
filename_1 filename_2 filename_3 filename_4 filename_5 filename_6 filename_7
我用这样的 for 循环结束了这个问题:
createfile() {
name=""
num=""
for((i=1;i<=num;i++))
do
touch "_${i}"
done
}
createfile
实际上效果很好。现在我尝试用 getopts
解决问题,似乎函数调用在 case 选项