2017-02-18 104 views
3

我需要創建一些具有相同名稱但末尾帶有數字的文件夾。在bash中同時創建文件夾

用戶應該寫一個數字,腳本應該創建這些數量的文件夾。我不知道如何鏈接數字和數字文件夾。

這裏是我的腳本

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

你可以使用seqxargs迭代和創造選擇的文件夾的數量輸入:

#!/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,否則它有可能破壞反斜槓。

+0

非常感謝!真的很有用:) – acbernal

0

做多mkdir而循環變量次數:

x2=4 
i=1 
while [ "$i" -le "$x2" ] 
    do 
    sudo mkdir carpeta$1 
    i=$(($i + 1)) 
done 
+1

如果您要使用支撐展開,請按照主要使用的方式使用它:'sudo mkdir carpeta {1..10}'。 – chepner

+0

感謝您的幫助! – acbernal

相關問題