我有这个 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 部分没有意义,为什么它的翻译不一样。
ChatGPT 这次确实表现不错。翻译得很好,比原文更有意义。
我对 shell 一点也不熟悉,但据我目前所知,else 语句与 elif 做同样的事情。那么为什么当 chatGPT 将其迁移到 python 时,它没有做同样的事情。
shell 代码片段的最后一点的作用是“如果参数 6 包含
-
,则运行此命令以提取第一个破折号之前的所有内容。如果没有,请运行相同的命令,即使因为参数现在不包含 -
,该命令将只返回参数 6”。
因此,对于其他人来说,ChatGPT 翻译比原始 shell 代码更正确、更清晰,因为 python 清楚地显示“如果其中没有
_
或 -
,则只是参数 6”。这就是 shell 代码正在做的事情,但它稍微掩盖了它正在做的事情。
(实际上,从技术上讲,ChatGPT 缺少一些翻译,因为 shell 的执行方式从参数 6 的前后删除了空格。想必,这不是您关心的问题)