vi delete_exited_containers.sh
#!/bin/bash# 列出所有停止的容器并存储到数组
list_exited_containers() {echo -e "\nStopped containers:"containers=()# 获取停止的容器信息并存入数组while IFS= read -r line; docontainers+=("$line")done < <(docker ps -a --filter "status=exited" --format "{{.ID}} {{.Names}}")# 显示停止的容器列表for i in "${!containers[@]}"; doecho "[$i] ${containers[$i]}"done
}# 删除指定的容器
delete_containers() {local indexes=("$@")for index in "${indexes[@]}"; doif [[ $index =~ ^[0-9]+$ ]] && [[ $index -lt ${#containers[@]} ]]; thencontainer_info=${containers[$index]}container_id=$(echo "$container_info" | awk '{print $1}')echo "Deleting container: $container_info"docker rm "$container_id"elseecho "Invalid index: $index"fidone
}# 主逻辑
while true; dolist_exited_containersif [[ ${#containers[@]} -eq 0 ]]; thenecho "No stopped containers to delete."breakfi# 获取用户输入echo -e "\nEnter indexes of containers to delete (space-separated), or type 'all' to delete all, or 'exit' to quit:"read -r inputif [[ "$input" == "exit" ]]; thenecho "Exiting..."breakelif [[ "$input" == "all" ]]; then# 删除所有容器for i in "${!containers[@]}"; docontainer_id=$(echo "${containers[$i]}" | awk '{print $1}')echo "Deleting container: ${containers[$i]}"docker rm "$container_id"doneecho "All stopped containers deleted."else# 使用下标删除指定的容器IFS=' ' read -r -a indexes <<< "$input"delete_containers "${indexes[@]}"fiecho -e "\nOperation complete. Would you like to continue? (yes/no):"read -r continue_inputif [[ "$continue_input" != "yes" ]]; thenecho "Exiting..."breakfi
done
赋予执行权限
chmod +x delete_containers_by_index.sh
运行脚本
./delete_containers_by_index.sh
输入下标,然后输入yes确认删除
0
yes