私はbashを使い始めたばかりなので、答えがはっきりしないことを願っています。次のようなplaylists.txtというファイルがあります。
- ChilledDubstep PLYNrAD9Jn2WDwRrS_Uw6UR55K-c_s6EH4
- クラシックPLYNrAD9Jn2WDWZFpIG3a2tkOBtdeNAbc6
- ChilledOut PLYNrAD9Jn2WCfrUCoS22kn3pBX1XUFinE
- SlickSlickSound PLYNrAD9Jn2WDmpu3gNVxIVO8bAiOcQkx7
- アルバム、コンサートPLYNrAD9Jn2WD3BI8o5VjmSbhZgfYh5zaX
各行の最初の文字列を$nameに割り当て、2番目の文字列を$ hashに割り当て、それをscript.shに送信して、行数が将来増える可能性があることを認識して、すべての行に対してこれを再帰的に実行します。
私はこれを書きましたが、機能しません:これを使用する-> bashシェルで1つの文字列を複数の変数に分割する方法は?
while read name hash
do
sh script.sh "$name" "$hash"
done < playlists.txt
代わりに何をすべきですか?前もって感謝します。
編集:みんなありがとう、それで私はこれに変更しました、それは読みやすいです。私はそれが私のエラーを解決するだろうと思ったが、まだそこにある...くそー。つまり、基本的に、script.shでは、最初の部分は次のとおりです。
cd ~/Music/Youtube\ Playlist/Playlists/$name
mv $HOME/Music/Youtube\ Playlist/Playlists/$name/TextRecords/lastoutput.txt $HOME/Music/Youtube\ Playlist/Playlists/lastoutput.txt
ただし、シェルはエラーを返します。
mv: cannot stat `/home/kabaka/Music/Youtube Playlist/Playlists//TextRecords/lastoutput.txt': No such file or directory
つまり、プレイリストの名前があるべきところには何もありません。理由はわかりますか?現在のスクリプトの$nameと上記のスクリプトの$nameが同じではないためですか?$ hashでも同じことが起こっていることに注意してください。これは、URLに表示されるはずですが、空白です。