function get_path
{
<HERE>
if [ $TYPE= 'MUSIC' ]
then
FILELIST_TEMP+=("/data/user/DOWNLOAD,/data/user/MUSIC")
IFS=',' read -r -a FILELIST_PATH <<< "$FILELIST_TEMP"
elif [ $TYPE= 'IMAGE' ]
FILELIST_PATH+=("/data/user/IMAGE")
fi
}
上面的代码用于将文件夹路径存储到数组中。有两种情况,其中一个变量有1个字符串或2个字符串。
1)可以读取命令用于将字符串分配给数组吗?如何操作?(图像部分)
2)ARRAY + =“value”是否等于向数组附加新值?它不会先将数组重置为默认值0然后追加?
3a)如果从main调用上面的代码,我在declare -a FILELIST_PATH=()
声明<HERE>
。当我通过调用FILELIST_PATH
中的数组总数进行测试时,它显示为零。< / p>
3b)如果我错了,请纠正我read -r -a FILELIST_PATH
也与declare -a FILELIST_PATH=()
相同,它将数组重置为0,但即使在function_get_path
处声明它也可以在main函数中访问那是为什么?
所需输出:
/data/user/DOWNLOAD
/data/user/MUSIC
/data/user/IMAGE
答案 0 :(得分:1)
1)是的,-a
选项允许您读入数组。
2)ARRAY+="value"
不附加到数组,它必须是ARRAY+=("value")
。 ARRAY+="value"
将value
与ARRAY[0]
连接起来。他们都没有重置阵列。
3a)当你在函数中使用declare
时,变量是函数的局部变量,除非你使用-g
选项使它成为一个全局变量。
3b)您必须使用declare
或local
来声明局部变量。如果您只是使用VAR=value
或read VAR
分配未声明的变量,则不会在本地声明它,因此会创建一个全局变量。
仅供参考,定义函数的标准语法如下:
get_path() {
<HERE>
if [ $TYPE= 'MUSIC' ]
then
FILELIST_TEMP+=("/data/user/DOWNLOAD,/data/user/MUSIC")
IFS=',' read -r -a FILELIST_PATH <<< "$FILELIST_TEMP"
elif [ $TYPE= 'IMAGE' ]
FILELIST_PATH+=("/data/user/IMAGE")
fi
}
function get_path
是bash
扩展程序。