2013-04-17 143 views
1

我有一个我想用来创建目录的客户名称数组。下面是我正在运行的代码:从for循环中的数组创建目录

$ echo "$customerArray=(customer1 customer2 customer3 customer4 customer5)" 

for customerName in $(customerArray); 
do 
    mkdir -p /home/$customerName 
    mkdir -p /home/$customerName/outbound 
    mkdir -p /home/$customerName/outbound_backup 
    mkdir -p /home/$customerName/dropoff 
done 

任何人都可以向我解释我做错了什么?

回答

2

这将是使用 brace expansion

customerArray=(customer1 customer2 customer3 customer4 customer5) 
for customerName in ${customerArray[*]} 
do 
    mkdir -p /home/$customerName/{outbound,outbound_backup,dropoff} 
done 
+0

嘿史蒂文感谢您的回应。实际上,我更想测试上面指定的for循环是否正确读取数组中的信息。 – user2019182

4

你不能设置一个变量字符串文字里面,我敢肯定,$(customerArray)是无效的,以及工作方案。尝试代替以下:

customerArray=(customer1 customer2 customer3 customer4 customer5) 
for customerName in ${customerArray[@]} 
do 
    ... 
done 

需要引用数组变量如任一${customerArray[@]}${customerArray[*]}bash manual更深入地描述了这一点。