我对 shell 脚本比较陌生,正在编写一个脚本来组织我的音乐库。我使用 awk 来解析 id3 标签信息并生成一个换行符分隔列表,如下所示:
Kanye West
College Dropout
All Falls Down
Run Code Online (Sandbox Code Playgroud)
我想将每个字段存储在一个单独的变量中,这样我就可以轻松地编写一些 mkdir 和 mv 命令。我尝试通过管道输出,IFS=$'\n' read artist album title但每个变量仍然为空。我愿意从 awk 生成不同的输出,但我仍然想知道如何使用 bash 解析换行符分隔的列表。
编辑:
事实证明,通过直接通过管道read进行:
id3info "$filename" | awk "$awkscript" | {read artist; read album; read title;}
Run Code Online (Sandbox Code Playgroud)
不管用。它导致变量存在于不同的范围内。我发现使用herestring效果最好:
{read artist; read album; read title;} <<< "$(id3info "$filename" | awk "$awkscript")"
Run Code Online (Sandbox Code Playgroud)