Bash脚本循环
因此,我尝试创建一个bash脚本循环,该循环接受用户想要的文件名和文件数,并创建空文件。我编写了脚本,但不断出现错误“/dog.sh:line 6:0]:没有这样的文件或目录”。我不熟悉bash脚本,不知道自己做错了什么。任何帮助都会很棒,谢谢Bash脚本循环,bash,shell,loops,unix,Bash,Shell,Loops,Unix,因此,我尝试创建一个bash脚本循环,该循环接受用户想要的文件名和文件数,并创建空文件。我编写了脚本,但不断出现错误“/dog.sh:line 6:0]:没有这样的文件或目录”。我不熟悉bash脚本,不知道自己做错了什么。任何帮助都会很棒,谢谢 #!/bin/bash echo "what file name do you want?"; read filename echo "how many files do you want"; read filenumber x=$filenumber
#!/bin/bash
echo "what file name do you want?"; read filename
echo "how many files do you want"; read filenumber
x=$filenumber
if [$x < 0]
then
touch $fiename$filenumber
x=$((x--))
fi
#/bin/bash
echo“您想要什么文件名?”;读取文件名
回显“您想要多少文件”;读取文件号
x=$filenumber
如果[$x<0]
然后
触摸$fiename$文件号
x=$((x-))
fi
可能是打字错误:$fiename而不是$filename
此外,您可能需要这样的循环:
x=1
while [ $x -le $filenumber ]; do
touch $filename$x
let x=x+1
done
seq$filenumber
生成从1到$filenumber
的数字列表。for
循环依次将x
分配给这些数字中的每一个。对x
的每个值运行touch
命令
可供替代的
在bash
中,如果我们可以在命令行中键入正确的文件号,那么同样的事情也可以在没有for
循环的情况下完成:
$ touch myfile{1..7}
$ ls
myfile1 myfile2 myfile3 myfile4 myfile5 myfile6 myfile7
{1..7}
称为“大括号扩展”。Bash将表达式myfile{1..7}
展开为我们想要的七个文件的列表
支架扩展确实有一个限制。它不支持shell变量。因此,
触摸myfile{1..$filenumber}
将不起作用。我们必须直接在大括号中输入正确的数字。考虑先运行脚本以解决基本问题,然后询问其余问题。x=$((x-)
非常有趣。;)代码>。这解决了我运行它的问题,但我得到的只是一个带编号的文件。例如,狗和7=狗7。我需要它来做狗1,狗2,狗3,。。。狗7.谢谢!我知道我的问题在哪里了。谢谢你的帮助。尽可能让这句话与你的例子保持一致。
#!/bin/bash
echo "what file name do you want?"; read filename
echo "how many files do you want"; read filenumber
x=$filenumber
while [ $x -gt 0 ]; do
touch $filename$x
x=$(( $x - 1))
done
#!/bin/bash
echo "what file name do you want?"; read filename
echo "how many files do you want"; read filenumber
x=$filenumber
while [ $x -gt 0 ]; do
touch $filename$x
x=$(( $x - 1))
done