gpt4 book ai didi

linux - shell 脚本输出中的语言正在发生变化

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:04 26 4
gpt4 key购买 nike

我写了一个脚本,列出了机器上安装的所有包,然后将它与位于 /tmp/pacotes_iniciais.log 中的另一个列表进行比较。由于某种原因,输出的语言有时会发生变化。它在英语和葡萄牙语之间交替。

我第一次运行脚本时,它输出 Mon(星期一),但在第二次运行时,日期是 Seg,这是 的小写形式Segunda(葡萄牙语为星期一)。

此外,在英文中,单词会在 14º 字符处被截断。

这是有问题的,因为完全不验证比较。

下面是创建列表和执行比较的脚本的摘录:

dpkg -l | awk '{print $2}' >> /tmp/lista_pacotes.log

echo "\nPackages added until" $(date) "\n" >> /tmp/diferencas.log

grep -F -x -v -f /tmp/pacotes_iniciais.log /tmp/lista_pacotes.log >> /tmp/diferencas.log

/tmp/diferencas.log的内容

第二次运行:

Packages added until Seg Nov 14 08:48:22 BRT 2016 

sl

第一次运行:

Packages added until Mon Nov 14 08:24:17 BRT 2016 

Name
acpi-support-b
apt-listchange
aptitude-commo
aptitude-doc-e
bash-completio
ca-certificate
console-setup-

[...]

这可能是什么原因造成的?

注意:我在 64 位 Debian Jessie 操作系统上运行这个脚本,并通过 SSH 访问这台机器。

最佳答案

来自 date 的信息页面:

Invoking ‘date’ with no FORMAT argument is equivalent to invoking it with a default format that depends on the ‘LC_TIME’ locale category.

示例

LC_TIME=en_US.UTF-8 date
LC_TIME=ru_RU.UTF-8 date

示例输出

Mon Nov 14 20:27:59 +07 2016
Пн ноя 14 20:28:04 +07 2016

所以您描述的行为是由于您的区域设置,即 LC_TIME 环境变量。在运行脚本之前调整它(在目标机器上!),例如:

export LC_TIME=C

其他问题很可能也是由区域设置引起的。因此,以类似的方式调整其余的语言环境变量。 LANGLC_NUMERIC 变量尤为重要。查看信息页面:info bash LANG

关于linux - shell 脚本输出中的语言正在发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40589813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com