bash – 迭代并替换数组中的元素
发布时间:2020-12-15 21:49:41 所属栏目:安全 来源:网络整理
导读:我试图用“复制”数组中的“哈密瓜”替换“苹果”这个词.我现在正在做的不是抛出错误,但复制数组中没有发生任何变化. #!/bin/bashfruits=("Oranges" "Apples" "Bananas" "Grapes")echo "Original list:"echo "${fruits[@]}"copy=("${fruits[@]}")for i in ${
我试图用“复制”数组中的“哈密瓜”替换“苹果”这个词.我现在正在做的不是抛出错误,但复制数组中没有发生任何变化.
#!/bin/bash fruits=("Oranges" "Apples" "Bananas" "Grapes") echo "Original list:" echo "${fruits[@]}" copy=("${fruits[@]}") for i in ${copy[@]} do if [[ copy[$i] == "Apples" ]]; then copy[$i]="Canteloupe" fi done echo "Copied list:" echo "${copy[@]}" 我的输出: Original list: Oranges Apples Bananas Grapes Copied list: Oranges Apples Bananas Grapes 解决方法
在您的原始方法中,您循环遍历数组中的键,您将无法获取要替换的元素的索引.
您需要更改以修改逻辑以循环遍历数组的索引 for i in "${!copy[@]}"; do if [[ ${copy[$i]} == "Apples" ]]; then copy[$i]="Canteloupe" fi done 应该解决你的问题. “${!copy [@]}”中i的构造; do用于循环,数组的索引从0开始到数组的大小,这使您可以替换索引中找到所需字符串的元素. 在使用任何一种数组迭代方法时,扩展答案以指出差异. 循环指数 for i in "${!copy[@]}"; do printf "%st%sn" "$i" "${copy[$i]}" done 版画 0 Oranges 1 Apples 2 Bananas 3 Grapes 和钥匙 for i in "${copy[@]}"; do printf "%sn" "$i" done 生产, Oranges Apples Bananas Grapes (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |