我知道這樣的事情在DOS中是可行的,但我不確定如何在bash中進行。
我正在撰寫一個腳本,它需要一些配置資料。source, name, 和destination。在配置中會有可變數量的這些資料。我需要對每一組進行迭代。
因此,例如:
#!/bin/bash
FOLDER_1_SOURCE="/path/one"/span>
FOLDER_1_NAME="one"。
FOLDER_1_DESTINATION="one"。
FOLDER_2_SOURCE="/path/two two"/span>
FOLDER_2_NAME="二"。
FOLDER_2_DESTINATION="here"。
FOLDER_3_SOURCE="/something/random"/span>
FOLDER_3_NAME="bravo"
FOLDER_3_DESTINATION="那里"
FOLDER_..._SOURCE="/something/random"。
FOLDER_..._NAME="bravo"。
FOLDER_..._DESTINATION=""
FOLDER_X_SOURCE="/something/random"。
FOLDER_X_NAME="bravo"
FOLDER_X_DESTINATION=""。
然后我想遍歷每個集合,并獲得每個集合的SOURCE和NAME值。
我并不拘泥于這種格式。我只是不知道還能怎么做。最終的目標是,我有1個或多個變數集,其中有source、name和destination,然后我需要迭代它們。
uj5u.com熱心網友回復:
AFIK bash沒有列出所有變數的功能。一個變通的辦法--這也是模仿DOS中的情況--是使用環境變數,并將你的搜索限制在這些變數上。在這種情況下,你可以這樣做
printenv|grep ^FOLDER|cut -d = -f 1
這與在Windows CMD shell a
SET FOLDER
uj5u.com熱心網友回復:
這類問題的答案幾乎都是 "使用陣列"
。declare -a folder_source folder_name folder_dest
folder_source[1]="/path/one"。
folder_name[1]="one"。
folder_dest[1]="one"。
folder_source[2]="/path/two two"/span>
folder_name[2]="二"。
folder_dest[2]="這里"。
folder_source[3]="/something/random"/span>
folder_name[3]="bravo"。
folder_dest[3]="那里"。
folder_source[4]="/something/random"/span>
folder_name[4]="bravo"。
folder_dest[4]=""/span>
for((i=1; i<=${#folder_source[@]}; i)); do?
echo "$i source:"/span> "${folder_source[$i]}"/span>
echo "$i name:"/span> "${folder_name[$i]}"
echo "$i destination:"/span> "${folder_dest[$i]}"/span>
done
Bash陣列的索引是以0為基礎的,但是為了方便起見,我們在這里不使用第2個槽。
從本質上講,你的私有變數要避免大寫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/308021.html
標籤:
