gpt4 book ai didi

bash - Bash-在连接成字符串有序字符串之前,先剥离并在数字前添加零

转载 作者:行者123 更新时间:2023-12-03 08:22:09 24 4
gpt4 key购买 nike

我需要自动执行将文件存储在YYYYMMDD.nn等文件夹中的备份解决方案。
每天都会像这样备份少量文件,因此生成的文件夹名称可能是20141002.01、20141002.2 ... 20141002.10。我当前的脚本适用于YYYYMMDD.n,但是当n大于9时,排序和拾取最后一个文件夹不起作用,因为20141002.10高于20141002.9母鸡切换到YYYYMMDD.nn格式,并且采用了分离nn,去除前导零的方法,然后递增,并在需要时添加前导零。
我有一个功能,该功能检查今天日期的最后一个文件夹并创建下一个。

createNextProcessedFolder() {
local LastFolderName=`ls -1 ${ProcessedListsDir} | grep ${CurrentDate} | tail -n 1`
n=`echo ${LastFolderName} | sed -r 's/^.{9}//'`
n="$((10#$n))"
nextFolderName=${CurrentDate}.$((if[[ $(( ${n}+1 )) < 10 ]];then n="0$((${n}+1))";else n="$(( ${n}+1 ))"; fi))
mkdir ${ProcessedListsDir}/${nextFolderName}
if [[ -d ${ProcessedListsDir}/${nextFolderName} ]]
then
echo "New folder ${nextFolderName} was created"
else
echo "Error: ${nextFolderName} was not created"
fi
Location="${ProcessedListsDir}/${nextFolderName}"
}

因此,当我尝试运行此命令时,出现如下错误:
line 21: if[[ 1 < 10 ]];then n="01";else n="1"; fi: syntax error: invalid arithmetic operator (error token is ";then n="01";else n="1"; fi")

第21行是:
nextFolderName=${CurrentDate}.$((if[[ $(( ${n}+1 )) < 10 ]];then n="0$((${n}+1))";else n="$(( ${n}+1 ))"; fi))

我确定在此之后还会有更多错误,但是如果有人帮助我,我将非常感谢。

最佳答案

  • 您不能使用$((...))进行命令替换,因为它需要是$(...)
  • [[]]之前和之后需要空格。您还可以在BASH中使用((...)):

  • 尝试这个:
    (( (n+1) < 10 )) && n="0$((n++))" || ((n++))
    nextFolderName="${CurrentDate}.${n}"

    关于bash - Bash-在连接成字符串有序字符串之前,先剥离并在数字前添加零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26164990/

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