gpt4 book ai didi

bash - 将零添加到单个数字变量

转载 作者:行者123 更新时间:2023-11-29 08:43:37 25 4
gpt4 key购买 nike

尝试在变量小于 10 之前添加一个零并创建所述目录。我似乎无法正确添加零。继续生成 02.1.201102.2.2011 等等

i=0
for i in {01..31}
do
if $i > 10
then
mkdir $path/02.0$i.2011
else
mkdir $path/02.$i.2011
fi
done

最佳答案

您可以将整个批处理替换为:

for day in 0{1..9} {10..31} ; do
mkdir ${path}/02.${day}.2011
done

同时仍然不必启动任何外部进程(循环体中可能存在的进程除外)。

这里可能没那么重要,因为 mkdir 不是您倾向于在紧密循环中经常做的事情之一,但它 如果您在 bash 中编写大量快速而肮脏的代码,这很重要。

当您像我的一些脚本偶尔那样做数十万次时,流程创建是昂贵的:-)

示例,您可以看到它的实际效果:

pax$ for day in 0{8..9} {10..11}; do echo ${day}; done
08
09
10
11

而且,如果您有足够新的 bash 版本,它将满足您对前导数字的请求:

A sequence expression takes the form {x..y[..incr]}, where x and y are either integers or single characters, and incr, an optional increment, is an integer.

When integers are supplied, the expression expands to each number between x and y, inclusive.

Supplied integers may be prefixed with 0 to force each term to have the same width. When either x or y begins with a zero, the shell attempts to force all generated terms to contain the same number of digits, zero-padding where necessary.

所以,在我的 Debian 6 机器上,bash 版本 4.1.5:

pax$ for day in {08..11} ; do echo ${day} ; done
08
09
10
11

关于bash - 将零添加到单个数字变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5099119/

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