Bash脚本循环

时间:2014-11-04 22:57:55

标签: 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
if [$x < 0] 
then
touch $fiename$filenumber
x=$((x--))

fi

3 个答案:

答案 0 :(得分:0)

也许这是一个错字:$ fiename而不是$ filename

另外,您可能需要某种类似的循环:

x=1
while [ $x -le $filenumber ]; do
    touch $filename$x
    let x=x+1
done

答案 1 :(得分:0)

for x in $(seq "$filenumber"); do touch "$filename$x"; done

seq $filenumber生成从1到$filenumber的数字列表。 for循环依次为这些数字中的每一个分配xtouch的每个值都会运行x命令。

替代

bash中,如果我们可以在命令行中输入正确的文件编号,那么可以在没有for循环的情况下完成同样的事情:

$ touch myfile{1..7}
$ ls
myfile1  myfile2  myfile3  myfile4  myfile5  myfile6  myfile7

{1..7}被称为“支撑扩展”。 Bash会将表达式myfile{1..7}扩展为我们想要的七个文件的列表。

支撑扩张确实有局限性。它不支持shell变量。所以,touch myfile{1..$filenumber}不起作用。我们必须直接在大括号中输入正确的数字。

答案 2 :(得分:0)

#!/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