在脚本中使用命令nl(文件的数字行)在Bash中使用变量

时间:2017-02-15 19:21:07

标签: bash scripting

我正在尝试创建一个脚本,允许我将歌曲列表写入文本文件,格式如下:

#01 - Artist - Title
#02 - Artist - Title
#03 - Artist - Title
#04 - Artist - Title
etc.

我从Spotify导出艺术家和标题,并且在某些情况下需要手动调整某些格式。我现在将手动执行此操作,但可能会尝试稍后自动执行此操作。现在我想把艺术家 - 标题放在TRACKS变量中,并希望运行脚本以使用#NUMBER - Artist - Title来添加它。我目前正在使用echo "${NL}"来测试我的输出在将其写入文件之前是否正确输出。

#!/usr/bin/env bash

TRACKS=$(cat <<-END
Artist - Title
Artist - Title
Artist - Title
Artist - Title
END
)

$NL=$(echo "${TRACKS}" | nl -nrz -w2 -s" - " -) 

echo "${NL}"

我遇到的问题是,无论我如何使用命令nl如下所述,或仅仅作为$NL=nl inputfile.txt脚本返回"command not found"。我不知道为什么我不能在变量中使用它。我已经尝试过指定二进制文件的确切路径而没有运气。它的唯一工作方式是将其用作nl inputfile.txt而不将其指定为变量。基本上与直接从命令行运行它相同。

1 个答案:

答案 0 :(得分:2)

执行作业时不要使用美元符号:

改变这个:

$NL=$(echo "${TRACKS}" | nl -nrz -w2 -s" - " -) 

To This:

NL=$(echo "${TRACKS}" | nl -nrz -w2 -s" - " -)