【问题标题】:cd: bad substitution in shell scriptcd:shell 脚本中的错误替换
【发布时间】:2020-03-06 16:56:03
【问题描述】:

错误

./sample.sh[245]: cd: bad substitution

这是第 455 行:

BSOld=`cd /opt/siebel/15.0.0.0.0/ses/siebsrvr/webmaster*;ls -lrt | grep *srf* | tail -1 | awk '{print $9}'`

【问题讨论】:

  • 错误消息中报告的行号不一定是实际导致语法错误的行——它通常稍早一些。构建一个 minimal reproducible example,该 minimal reproducible example 经测试可在由非您本人自行运行时重现该错误。
  • 另外,您会注意到,如果您通过shellcheck.net 运行它,即使您的一行也会提供很多反馈——您应该运行整个脚本,并修复它找到的所有内容。
  • (不是您的特定错误的原因,但请注意 grep *srf* 通常根本不起作用;只需 grep srf 查找该子字符串 - 但如果您想找到与模式匹配的最新或最旧文件,请参阅 BashFAQ #3 了解最佳做法)。
  • 顺便说一句,将通配符传递给cd 通常是错误的形式。如果siebsrvr 中有多个以webmaster 开头的目录,您会发生什么?

标签: shell unix glob cd


【解决方案1】:

这个问题是*。没有* 它可以工作。

BSOld=`cd /opt/siebel/15.0.0.0.0/ses/siebsrvr/webmaster;ls -lrt | grep *srf* | tail -1 | awk '{print $9}'`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 2018-05-28
    • 2012-08-20
    • 2021-03-07
    • 2015-11-09
    • 1970-01-01
    • 2011-02-14
    相关资源
    最近更新 更多