Shell
在每個列表項中列出兩個值
我想儲存一個包含姓名和電子郵件地址的列表,並在單個 for 循環中使用它。我想在殼牌中做到這一點。
知道 shell 列表有一個空格分隔符
list = "john, john@gmail.com" "doe, doe@outlook.com" "jenny, jenny@another.domain" for i,j in $list; do echo "Dear $i, email text" | mail -s "Hello $i" $j done
這應該作為
echo "Dear john, email text" | mail -s "Hello john" john@gmail.com
另外,如果我想在單獨的 csv 文件中創建此列表,我將如何使用它?例如
name, email john, john@gmail.com jenny, jenny@another.domain doe, doe@outlook.com
如果你的 shell 支持它們,你可以在第一種情況下使用關聯數組:
declare -A list=([john]="john@gmail.com" [doe]="doe@outlook.com" [jenny]="jenny@another.domain") for i in "${!list[@]}"; do echo "Dear $i, email text" | mail -s "Hello $i" "${list[$i]}" done
對於第二種情況,一個while循環:
while IFS=, read -r i j; do echo "Dear $i, email text" | mail -s "Hello $i" "$j" done < file.csv
(這假設您的文件是正確格式的 CSV,沒有標題行)。