有什么区别?

问题描述 投票:0回答:1

我有这个 korn shell 代码,我正在使用 chatGPT 将其迁移到 python。

else
    if [[ $6 == *_* ]]; then
        app=`echo $6 | cut -d"_" -f1`
    elif [[ $6 == *-* ]]; then
        app=`echo $6 | cut -d"-" -f1`
    else
        app=`echo $6 | cut -d"-" -f1` # Extracts the value before the first "-" in $6
    fi

Python代码:

else:
    if '_' in sys.argv[6]:
        app= sys.argv[6].split('_')[0]
    elif '-' in sys.argv[6]:
        app= sys.argv[6].split('-')[0]
    else:
        app= sys.argv[6] # Extracts the value before the first "-" in sys.argv[6]

我一直试图要求chatGPT解释,但它所做的只是承认这是错误的,但给了我相同的答案,所以它一直在兜圈子。 我对 shell 一点也不熟悉,但据我所知,else 语句与 elif 的作用相同。那么为什么当 chatGPT 将其迁移到 python 时,它没有做同样的事情。

我目前无法测试代码,我尝试研究 bash 代码,这对我来说很有意义,但 python 部分没有意义,为什么它的翻译不一样。

python ksh
1个回答
-1
投票

ChatGPT 这次确实表现不错。翻译得很好,比原文更有意义。

我对 shell 一点也不熟悉,但据我目前所知,else 语句与 elif 做同样的事情。那么为什么当 chatGPT 将其迁移到 python 时,它没有做同样的事情。

shell 代码片段的最后一点的作用是“如果参数 6 包含

-
,则运行此命令以提取第一个破折号之前的所有内容。如果没有,请运行相同的命令,即使因为参数现在不包含
-
,该命令将只返回参数 6”。

因此,对于其他人来说,ChatGPT 翻译比原始 shell 代码更正确、更清晰,因为 python 清楚地显示“如果其中没有

_
-
,则只是参数 6”。这就是 shell 代码正在做的事情,但它稍微掩盖了它正在做的事情。

(实际上,从技术上讲,ChatGPT 缺少一些翻译,因为 shell 的执行方式从参数 6 的前后删除了空格。想必,这不是您关心的问题)

© www.soinside.com 2019 - 2024. All rights reserved.