2017-02-15 9 views
0

私は次のフォーマットのテキストファイルに曲のリストを書くことができるスクリプトを作成しようとしています:スクリプトのnl(ファイルの行数)コマンドでBashの変数を使用する

#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 inputfile.txtとしてスクリプトが"command not found"を返すようNLコマンドを使用して、どのように関係なくです。なぜ私は変数で使用できないのか分かりません。私は運がないバイナリへの正確なパスを指定しようとしました。それが変数として指定することなくnl inputfile.txtとして使用する場合、それが機能する唯一の方法です。コマンドラインから直接実行するのと本質的に同じです。割り当てを実行する際に

+2

= NL 'として変数を設定し...' 、 '$'はありません。 – leekaiinthesky

+0

今のところ「TRACKS」を実際に使用する必要があるかどうかを検討してください。配列(要素ごとに1つのトラック)を作ることができます。ここでは、 'nl'は' cat'のようにここの文書から直接読み取ることができます。 – chepner

+0

私はちょうどbashスクリプトを使い始めています。配列とループを使って何をしたいのかを完全には理解できません。私は何をしたいかを実現する他の方法があると確信していますが、2つのコマンドで私が望む出力を実現できる 'nl'と' sed'を見つけました。私は 'nl'が文書からの入力を受け入れることを知っています。私はそれを分離して、Spotifyから手作業で整理された情報をtxtファイルから取得します。おそらく、将来私は手動クリーンアップの部分も同様にスクリプト化することができます。 – d1th

答えて

2

は、ドル記号を使用しないでください。これに

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

:この

変更

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

ありがとうございます。それがそれでした。私はスクリプティングといくつかのものを一緒に作ろうとしています。私はこれを愚かな間違いにしたとは信じられません。 – d1th

関連する問題