Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash脚本循环_Bash_Shell_Loops_Unix - Fatal编程技术网

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

因此,我尝试创建一个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
#/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