【发布时间】:2019-08-20 02:02:28
【问题描述】:
我编写了一个小型 bash 脚本,用于搜索文件夹、提取不符合特定条件的文件列表并将它们分配给数组。然后我循环遍历该数组并将内容输出到标准输出。我想要做的是将这些结果中的每一个附加到一个变量中,然后我想稍后在代码中使用它。我正在努力寻找有关如何执行此操作的任何信息。看起来它应该超级简单,相当于回声附加类型的东西,但我在网上找到了零个例子。我想要类似的东西:$list = $list + $addition
这是我目前所拥有的。最后一块已经完成了 95%。
#Declare the array
array=()
#Search for any files that are not mp4's. Exclude temp files also.
while IFS= read -r -d $'\0'; do
array+=("$REPLY")
done < <(find "$movies_dir" -type f -not -name "*.mp4" -not -name "*.srt" -not -name "*.db" -not -name "*.tmp" -not -name "*DS_Store" -not -name "._*" -print0)
#Create an empty variable to assign the list of movies to
movie_list=""
# Loop through array pulling out each movie found
if [ ${#array[@]} -gt 0 ]; then
for i in "${array[@]}"
do
movie="${i##*/}"
echo -n "$movie\n"
done
fi
从上面的代码可以看出,这会将所有电影输出为一个长字符串,用 \n 分隔每个文件名(我计划稍后在 Slack 警报中使用)。考虑到这一点,这就是我需要将文本字符串分配给变量的原因。我希望能够在我的 Slack 通知中使用它。
谁能指出我如何实现上述目标?
谢谢。
【问题讨论】:
-
您是在问如何将命令的输出放入变量中?您可以使用
var=$(your command here)。该命令可以是for循环。 -
list+=" $addition"听起来像你想要的(将" $addition"连接到list的末尾,直到你用完添加 - 但请注意,list将是一个字符串,为什么不让它成为一个单独的数组?)