【问题标题】:OSX variable assignments giving errorOSX 变量赋值给出错误
【发布时间】:2017-02-19 20:05:28
【问题描述】:

“delta_oligo_combined.bedgraph”文件怎么可能在目录中,而 cat 命令看不到? OSX 拼写错误?

$ type=oligo
$ file_type=combined
$ ls delta_oligo_combined.bedgraph
delta_oligo_combined.bedgraph
$ cat delta_$(type)_$(file_type).bedgraph
-bash: file_type: command not found
cat: delta__.bedgraph: No such file or directory

【问题讨论】:

  • cat delta_${type}_${file_type}.bedgraph
  • $(something) 尝试执行 something,就好像它是一个命令或可执行文件一样。这是你想要的吗?
  • 好的,我发现 {} 错字了。

标签: bash syntax parameter-expansion


【解决方案1】:

您希望在(路径)字符串中包含 变量 值:

  • ${varName} 是您引用名为 varName 的变量的方式 - 请注意分隔符 {}(并不总是需要)。

  • 相比之下,您错误地使用了语法$(...),该语法用于将命令的输出嵌入到字符串中。

    • 因此,令牌typefile_type 被解释为命令 并被执行:

      • type 恰好是一个内置实用程序的名称,在不带参数调用时不输出任何内容。

      • 另一方面,file_type 不是任何现有命令的名称,这就是 Bash 抱怨 (command not found) 的原因。

    • 执行命令替换后生成的文件路径为 delta__.bedgraph(两个命令替换都扩展为空字符串),导致 cat 报告不存在的文件 (No such file or directory)。

请参阅man bash 了解更多信息。

【讨论】:

    猜你喜欢
    • 2022-10-13
    • 1970-01-01
    • 2020-01-08
    • 2021-12-04
    • 1970-01-01
    • 2016-04-24
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多