gpt4 book ai didi

arrays - 可以在 shell 中读取命令用于将字符串分配给数组并重置默认数组

转载 作者:太空宇宙 更新时间:2023-11-04 10:28:58 26 4
gpt4 key购买 nike

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 中的数组总数进行测试时它显示为零。

3b)如果我错了请纠正我read -r -a FILELIST_PATH也与 declare -a FILELIST_PATH=() 相同它将数组重置为 0,但即使它在 function_get_path 中声明,也可以在主函数中访问它这是为什么?

期望的输出:

 /data/user/DOWNLOAD
/data/user/MUSIC

/data/user/IMAGE

最佳答案

1) 是的,-a 选项允许您读入数组。

2) ARRAY+="value" 不附加到数组,它必须是 ARRAY+=("value")ARRAY+="value"value 连接到 ARRAY[0]。它们都不会重置数组。

3a) 当您在函数内部使用declare 时,该变量是函数的局部变量,除非您使用-g 选项使其成为全局变量。

3b) 您必须使用declarelocal 来声明局部变量。如果您使用 VAR=valueread 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
}

函数 get_path 是一个 bash 扩展。

关于arrays - 可以在 shell 中读取命令用于将字符串分配给数组并重置默认数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40779767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com