sar*_*ean 2 arrays macos bash loops if-statement
我目前正在尝试创建一个bash脚本,它将检查每个users/Library/Mail文件夹的内部,以查看是否存在名为V2的文件夹.该脚本应创建一个数组,其中数组中的每个项目都是用户,然后遍历每个用户,检查其主文件夹中是否有上述标题内容.这是我到目前为止:
#!/bin/bash
cd /Users
array=($(ls))
for i in ${array[@]}
do
if [ -d /$i/Library/Mail/V2 ]
then
echo "$i mail has been upgraded."
else
echo "$i FAIL"
fi
done
Run Code Online (Sandbox Code Playgroud)
ls当您拥有带空格的用户名时,从输出中填充数组将导致严重问题.请改用glob表达式.此外,使用[ -d $i/... ]将类似地使用空格中断名称 - 使用[[ -d $i/... ]]([[ ]]构造具有自己的语法规则并且不需要引用)或[ -d "$i/..." ](使用引号).
类似地,您需要使用双引号"${array[@]}"来避免使用两个空格拆分名称进行字符串拆分,如下所示:
cd /Users
array=(*)
for i in "${array[@]}"; do
if [[ -d $i/Library/Mail/V2 ]]; then
echo "$i mail has been upgraded."
else
echo "$i FAIL"
fi
done
Run Code Online (Sandbox Code Playgroud)
也就是说,你根本不需要一个阵列:
for i in *; do
...check for $i/Library/Mail/V2...
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2234 次 |
| 最近记录: |