[英]Assigning values to an array in Bash shell script
I've got a plain text file containing track titles & artists separated by a dash. 我有一个纯文本文件,其中包含曲目标题和艺术家,并用破折号分隔。 I want to put all the titles into one array ( TRK_TITLE[]
). 我想将所有标题放入一个数组( TRK_TITLE[]
)。 At the same time create an array of artists ( ARTIST[]
). 同时创建一系列艺术家( ARTIST[]
)。 Below is the code I'm using: 以下是我正在使用的代码:
CTR=0
# Read in the track title file
while read line
do
# Add to the counter
CTR=$((CTR + 1))
# Get the track number
TRK_NUM[$CTR]=$CTR
# VARIOUS is set by command line parameter
if [ $VARIOUS = "FALSE" ]
then
# -- THIS BIT WORKS! ------------------------------
TRK_TITLE[$CTR]=${line}
# ARTISTS determined by grandparent directory name.
ARTIST[$CTR]="$ARTISTS"
# THE BIT THAT DOESN'T WORK AS IT APPEARS ---------
else
# VARIOUS has been set to TRUE
# Get the track title
# 1st, Make sure I'm dealing with something sensible
echo "$line"
# Get the length of the line,
# just for information
total_len=${#line}
# Find the position of the "-"
dash_pos=`expr index "$line" -`
# These lines prove that the syntax works
echo "${line:0:$dash_pos - 2}"
echo "${line:$dash_pos + 1}"
echo $total_len "--" $dash_pos
# Now add to arrays
TRK_TITLE[$CTR]="${line:0:$dash_pos -2}"
#TRK_TITLE="${line:0:$dash_pos -2}"
ARTIST[$CTR]="${line:$dash_pos + 1}"
#ARTIST="${line:$dash_pos + 1}"
#Now to see the output
echo $TRK_TITLE[$CTR] "is Track"
#echo "$TRK_TITLE is Track"
echo $ARTIST[$CTR] "is Artist"
#echo "$ARTIST is Artist"
fi
# keep going until the end
# Variable name used for input file
done < "$FYL_2_USE"
When the hashes are where they are the output is thus: 因此,当散列位于它们所在的位置时,输出为:
Dedicated to the One I Love - The Mamas and The Papas 献给我爱的人-妈妈和爸爸
Dedicated to the One I Love 献给我所爱的人
The Mamas and The Papas 妈妈和爸爸
53 -- 29 53-29
[19] is Track [19]是追踪
[19] is Artist [19]是艺术家
If the hashes are swapped on the variable and echo statements, the output is thus: 如果在变量和echo语句上交换了哈希,则输出为:
Dedicated to the One I Love - The Mamas and The Papas 献给我爱的人-妈妈和爸爸
Dedicated to the One I Love 献给我所爱的人
The Mamas and The Papas 妈妈和爸爸
53 -- 29 53-29
Dedicated to the One I Love is Track 献给我所爱的人
The Mamas and The Papas is Artist 妈妈和爸爸是艺术家
Shell is Gnu Bash V4.1.0(2) Shell是Gnu Bash V4.1.0(2)
If you replace: 如果您更换:
echo $TRK_TITLE[$CTR] "is Track"
echo $ARTIST[$CTR] "is Artist"
with: 有:
echo ${TRK_TITLE[$CTR]} "is Track"
echo ${ARTIST[$CTR]} "is Artist"
your script will work fine. 您的脚本可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.