OSX变量赋值给出错误

时间:2017-02-19 20:05:28

标签: bash syntax parameter-expansion

'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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

      • type恰好是内置实用程序的名称,在没有参数的情况下调用时不会输出任何内容。

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

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

有关详情,请参阅No such file or directory