簡體   English   中英

用於更新多個文件夾的命令的Linux shell腳本

[英]Linux shell scripts for commands to update multiple folders

我有一個我創建的腳本,它只是一個命令列表(cp,mkdir,rm等)。 這樣做基本上是用源文件夾的內容更新一堆文件夾的內容。

現在我有大約15個文件夾需要修改,每個文件夾大約有30個命令。 所以當我需要添加一個文件夾時,我需要再添加30個命令並指定該文件夾。

在腳本中是否有一種方法可以創建一個文件夾數組來更改和循環它或什么?

我的腳本現在只包含通常在命令行中運行的基本命令,因此沒有任何進展。

是的,你可以這樣做:

for x in "folder1" "folder2" "folder3"; do
  mkdir $x
  cp foobar $x
done

更好的是,使用數組來保存文件夾名稱,例如

arr=("folder1" "folder2" "folder3")

for x in ${arr[*]} do
  mkdir $x
  cp foobar $x
done

如果在模式后面有特定名稱,則可以使用循環自動生成該名稱列表。

這是一種方法:

#!/bin/bash

# This function does all you clever stuff
# $1 contains the first parameter, $2 the second and so on
function my_cmds()
{
    echo $1
}

# You can loop over folders like this
for i in folder1 folder2 folder3
do
    # here we call a function with the string as parameter 
    my_cmds $i
done

# ... or like this
folders[0]="folder0"
folders[1]="folders1"
folders[2]="folders2"

for i in "${folders[@]}"
do
    my_cmds $i
done

一種初始化整個數組的便捷方法是

array=( element1 element2 ... elementN )

符號。

這類似於使用for循環的答案,但使用here文檔來存儲文件夾列表。 這就像在腳本中嵌入了一個數據文件。

while read -r folder <&3; do
    mkdir "$folder"
    # etc
done 3<<EOF
folder1
folder2
folder with space
EOF

我使用文件描述符3作為here文檔,以防你在循環體中有命令嘗試從標准輸入讀取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM