2013-10-28 46 views
0

我有一个纯文本文件,其中包含由短划线分隔的曲目标题&。 我想将所有标题放入一个数组(TRK_TITLE[])。 同时创建一个艺术家阵容(ARTIST[])。 下面是我使用的代码:在Bash shell脚本中将值赋给数组

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" 

当哈希值是他们在哪里的输出是这样的:

献给我爱的人 - 的妈妈们和该帕帕斯

献给我爱

的妈妈们和该帕帕斯

53一 - 29

[19]是轨道

[19]是艺术家

如果散列被交换的变量和echo 语句,输出是这样的:

专用于我爱的人 - 妈妈与奶爸

献给我爱的人

的妈妈们和该帕帕斯

53 - 29

专用于我爱的是轨道

的妈妈们和该帕帕斯是艺术家

Shell是羚击V4.1.0 (2)

回答

1

如果更换:

echo $TRK_TITLE[$CTR] "is Track" 
echo $ARTIST[$CTR] "is Artist" 

有:

echo ${TRK_TITLE[$CTR]} "is Track" 
echo ${ARTIST[$CTR]} "is Artist" 

你的脚本将正常工作。

+0

感谢您发现我明显的错误Tomasz我怎么能看不到? –