【问题标题】:How do I write a file path which include a regular expression如何编写包含正则表达式的文件路径
【发布时间】:2020-03-24 20:13:03
【问题描述】:

根据我正在使用的系统,可能有 2 种不同的可能路径(互斥):

System1: /tmp/aword/foo
System2: /tmp/bword/foo

无论我遇到哪个系统(通过 shell 脚本),我都应该在 foo 文件中回显一些内容。

如何在路径本身中包含正则表达式以采用正确的(现有)路径?

我尝试过的东西:

#doesn't work
echo Hello > /tmp/(a|b)word/foo
#doesn't work
echo Hello > /tmp/[a|b]word/foo

有没有一种方法可以做到这一点,而不必在此之前包含一个测试路径是否存在的测试?

【问题讨论】:

    标签: linux shell


    【解决方案1】:

    如果字面上是awordbword 并且你知道它们中只有一个存在,你可以使用

    echo 'Hello' > /tmp/[ab]word/foo
    

    这是一个外壳模式和documented in the Bash manualPOSIX sh spec

    但是,如果两条路径都存在,Bash 会报错

    -bash: [ab]word: ambiguous redirect
    

    【讨论】:

    • 请注意,glob 不是正则表达式。 (但这可能是 OP 正在寻找的。)
    • 谢谢,就是这样。完全忘记了 shell globbing。使用现有的两条路径进行测试(对我来说不是用例),但我得到了:shel.sh: line 4: /tmp/[ab]word/foo: ambiguous redirect
    • @user2883071 是的,这就是错误的意思,让我更新一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多