Chcete-li odpovědět na otázku v nadpisu, můžete "posunout" pole se zápisem podřetězec/podřádek. (shift
sám pracuje pouze s pozičními parametry.)
$ a=(a b c d e)
$ a=("${a[@]:1}")
$ echo "${a[@]}"
b c d e
Podobně pro „vypnutí“ poslední položky z pole:a=("${a[@]:0:${#a[@]} - 1}" )
nebo unset "a[${#a[@]}-1]"
Takže pokud byste chtěli, můžete udělat toto:
a=(foo bar doo)
b=(123 456 789)
while [ "${#a[@]}" -gt 0 ] ; do
echo "$a $b"
a=("${a[@]:1}")
b=("${b[@]:1}")
done
Ale vyhazuje pole do koše, takže pouhé indexování jako obvykle může být lepší. Nebo možná místo toho použijte asociativní pole:
declare -A arr=([foo]=123 [bar]=456 [doo]=789)
Obecná poznámka. Nemá smysl definovat pole takto:
folder_mount_point_list="sdb sdc sdd sde sdf sdg"
folderArray=( $folder_mount_point_list )
Místo toho byste udělali toto:
folderArray=(sdb sdc sdd sde sdf sdg)
Nyní k vaší otázce:
set -- sdb sdc sdd sde sdf sdg
for folder_name; do
mkdir "/data/$folder_name"
done
nebo
set -- sdb sdc sdd sde sdf sdg
while [ $# -gt 0 ]; do
mkdir "/data/$1"
shift
done
Všechny hodnoty můžete jednoduše procházet smyčkou, není třeba je posouvat:
folderArray=(sdb sdc sdd sde sdf sdg)
for folder in "${folderArray[@]}"; do
mkdir "/data/$folder"
done
Jak zmírnit zranitelnosti Spectre a Meltdown na systémech Linux?
Co se stane, když smažete soubor zařízení?