python - 用于 shell 脚本的 Zip 函数

标签 python linux bash

我正在尝试编写一个 shell 脚本,它将 多个目标放入多个不同的路径中。我将传入一个以空格分隔的路径列表和一个以空格分隔的目标列表,脚本将为每对路径和目标生成 DESTDIR=$path $target。在 Python 中,我的脚本看起来像这样:

for path, target in zip(paths, targets):
    exec_shell_command('make DESTDIR=' + path + ' ' + target)

但是,这是我当前的 shell 脚本:

#! /bin/bash

packages=$1
targets=$2
target=

set_target_number () {
    number=$1
    counter=0
    for temp_target in $targets; do
        if [[ $counter -eq $number ]]; then
            target=$temp_target
        fi
        counter=`expr $counter + 1`
    done 
}

package_num=0
for package in $packages; do
    package_fs="debian/tmp/$package"
    set_target_number $package_num
    echo "mkdir -p $package_fs"
    echo "make DESTDIR=$package_fs $target"
    package_num=`expr $package_num + 1`
done

是否有与 Python 的 zip 函数等效的 Unix 工具或更简单的方法来通过索引从空格分隔的列表中检索元素?谢谢。

最佳答案

使用数组:

#!/bin/bash
packages=($1)
targets=($2)
if (("${#packages[@]}" != "${#targets[@]}"))
then
    echo 'Number of packages and number of targets differ' >&2
    exit 1
fi
for index in "${!packages[@]}"
do
    package="${packages[$index]}"
    target="${targets[$index]}"
    package_fs="debian/tmp/$package"
    mkdir -p "$package_fs"
    make "DESTDIR=$package_fs" "$target"
done

关于python - 用于 shell 脚本的 Zip 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3151809/

相关文章:

python - 如何将 pandas.dataframe 的索引提高四分之一?

python - 如何从 Pyramid 内提供 wsgi 应用程序?

linux - 我可以在 freeBSD 上安装 IntelliJidea 吗?

c - 如何删除 char 数组转换为无符号 char 数组的警告

bash - 为什么 bash 在数组的前面吞下 -e

windows - 有没有一种方法可以向git别名添加多个步骤?

python - 我无法将 GUI 合并到我的 python 程序中

python - 属性错误 : 'cached_property' object has no attribute 'setter'

java - 通过命令行与应用程序通信

linux - 将运行应用程序的部分输出存储到 bash 脚本变量