我需要创建一些具有相同名称但最后带有数字的文件夹。
用户应该写一个数字,脚本应该创建这些数量的文件夹。我不知道如何链接号码和号码os文件夹。
这是我的剧本
#!/bin/bash
echo "(1617S2)" A.C.B.S
pwd
date
NOM="A.C.B.S"
echo $NOM
echo -n "Introduce el numero de carpetas que quieras :"
read x
if (($x<=10)); then
echo "Son $x carpetas"
else (($ <10))
echo -n "El número de carpetas tiene que ser entre 1 i 10 :"
read x2
echo "Son $x2 carpetas"
fi
cd ..
cd /var
sudo mkdir carpetaprincipal
cd ..
cd /var/carpetaprincipal
sudo mkdir carpeta {1..10}
答案 0 :(得分:2)
您可以将seq
与xargs
一起使用来迭代并创建为输入选择的文件夹数量:
#!/bin/bash
echo "(1617S2)" A.C.B.S
pwd ; date
NOM="A.C.B.S" ; echo $NOM
function makeFolders () {
echo -n "Introduce el numero de carpetas que quieras :"
read -r x
if [[ "$x" -lt 11 ]] && [[ "$x" -gt 0 ]]; then
echo "Son $x carpetas"
cd ../var || exit
mkdir carpetaprincipal
cd carpetaprincipal || exit
seq "$x" | xargs -I{} mkdir carpeta_{}
fi
if [[ "$x" -lt 1 ]] || [[ "$x" -gt 10 ]]; then
echo "El número de carpetas tiene que ser entre 1 i 10!"
makeFolders # you could optionally exit 1 here
fi
}
makeFolders
您的脚本还存在其他问题,主要是逻辑没有意义。如果您输入的数量超过10或小于1,则脚本仍然允许用户创建上面低于应该允许的文件夹。将这些方法放在函数中也允许您在出现错误时返回输入行。此外,read
应包含-r
,否则它有可能破坏反斜杠。
答案 1 :(得分:0)
在循环变量次数时执行多个mkdir
:
x2=4
i=1
while [ "$i" -le "$x2" ]
do
sudo mkdir carpeta$1
i=$(($i + 1))
done