gpt4 book ai didi

linux - 参数替换替换为交替 (OR) |

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:43:21 24 4
gpt4 key购买 nike

考虑到大小写,我正在尝试替换文件名的扩展名,但没有成功。

#!/bin/bash
pdf_file="/root/users/test.pdf"
jpg_file="${pdf_file/.pdf/.jpg}"
echo $jpg_file

我试过了,还是不行:

jpg_file="${pdf_file/(.pdf|.PDF)/.jpg}"

最佳答案

您可以使用这样的 glob 模式:

$ echo "${pdf_file/.[Pp][Dd][Ff]/.jpg}"
/root/users/test.jpg

如果您使用扩展的 glob 模式 ( shopt -s extglob) ,您可以改用它:

$ echo "${pdf_file/.@(PDF|pdf)/.jpg}"
/root/users/test.jpg

或者您可以使用 shell 选项在匹配时忽略大小写:

$ shopt -s nocasematch
$ pdf_file="/root/users/test.PDF"
$ echo "${pdf_file/.pdf/.jpg}"
/root/users/test.jpg

备注对所有三种解决方案均有效:${<em>parameter</em>/<em>pattern</em>/<em>string</em>}替换模式出现的任何地方,但扩展可能在最后 - 我们可以确保我们只会在最后替换它:

echo "${pdf_file%.[Pp][Dd][Ff]}.jpg"

它可以在任何 POSIX shell 中工作,或者

shopt -s extglob
echo "${pdf_file%.@(PDF|pdf)}.jpg"

shopt -s nocasematch
pdf_file="/root/users/test.PDF"
echo "${pdf_file%.pdf}.jpg"

关于linux - 参数替换替换为交替 (OR) |,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57795138/

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