在特定索引处将值分配给数组

阿卜杜拉·塔拉特(AbdAllah Talaat)

您好,我正在尝试编写一个脚本来更新从文件读取的行,到目前为止,一切正常,除了最后提到的以下行

这是我的脚本:

#!/bin/bash     

#INITIALIZE PATHS
DB_PATH=${1}      
DATA_PATH="$DB_PATH/data/"
METADATA_PATH="$DB_PATH/metadata"   

#LOAD THE META DB FILE AND READ DATABASE NAME IN DB_NAME 
#READ ALSO COLUMNS IN AN ARRAY CALLED TABLE_NAMES                      
METADATA_LOAD=$(<"$METADATA_PATH/DB")
IFS=$'+'
read -a NAMES <<< "$METADATA_LOAD"



#PROMPET FOR TABLE TO UPDATE
echo ""
echo ""
echo ""
echo "You Currently Working with Database ${NAMES[0]}" 
echo ""
echo "You Have The Following Tables to Choose From :"
IFS=' '
for token in ${NAMES[@]:1}
do
echo "  $token"
done
echo ""
echo ""
echo ""
echo "Please Write The Name Of The Table You Want To Update :"
read CURRENT_TABLE


#Form META DATA TABLE FILE PATH
TABLE_DATA_PATH="$DB_PATH/data/$CURRENT_TABLE"
TABLE_METADATA_PATH="$DB_PATH/metadata/$CURRENT_TABLE"


#PROMPET WHICH COLUMN IS NEEDED TO CHECK FOR EQUALITY
echo ""
echo ""
echo ""
echo "The Table You Selected Have The Following Columns"
i=0 
TABLE_METADATA=$(<"$TABLE_METADATA_PATH")
IFS='+'
read -a CURRENT_TABLE_META <<< "$TABLE_METADATA"
IFS=' '
for token in ${CURRENT_TABLE_META[@]:1}
do
i=$(($i+1))
echo $i $token
done
echo "Please Enter The Number Column to Check For Equality"
read TEST_COLUMN_NUM
echo ""
echo ""
echo "Please Enter The Column Value to Check For Equality"
read TEST_COLUMN_VAL

echo "Please Enter The Column Number to Modify"
read MODIFY_COLUMN_NUM

echo "Please Enter The New Column Value"
read MODIFY_COLUMN_VAL

#Form DATA TABLE FILE PATH
TABLE_DATA=$(<"$TABLE_DATA_PATH") 


IFS=' '
read -a ROWS_ARRAY <<< "$TABLE_DATA"  




for CURRENT_ROW_INDEX in ${!ROWS_ARRAY[@]}
do

  IFS=':'
  read -a COLUMNS_ARRAY <<< "${ROWS_ARRAY[CURRENT_ROW_INDEX]}"

   for CURRENT_COL_INDEX in ${!COLUMNS_ARRAY[@]} 
   do

       if [[ ${COLUMNS_ARRAY[$CURRENT_COL_INDEX]} == $TEST_COLUMN_VAL  &&  $CURRENT_COL_INDEX -eq $(($TEST_COLUMN_NUM-1)) ]]
       then

           IFS=' '
           COLUMNS_ARRAY[$MODIFY_COLUMN_NUM] = "ABC"



       fi   

   done
done

我还没有完成脚本,但是在该行出现错误:

 COLUMNS_ARRAY[$MODIFY_COLUMN_NUM] = "ABC"

它给我错误

./Update:第91行:COLUMNS_ARRAY [3]:找不到命令

我想在给定索引处分配给数组以替换旧值,请帮助我了解错误的原因以及如何解决

伊尔卡楚

与在外壳程序中进行常规变量赋值相同,请不要在空格周围加上空格=

考虑到i=123,这是一个分配给指数123array

array[$i]="abc"

这会尝试运行一个名为的命令array[123](如果找到的文件名与glob模式匹配则返回任何结果):

array[$i] = "abc"

另外,每次使用时${array[@]},无论是否使用!:n:m,您都可能希望在其周围加上引号。如果没有引号,则数组值会进行单词拆分,而没有引号。

你有,例如for token in ${NAMES[@]:1}for .. in ${!ROWS_ARRAY[@]}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将新值分配给特定索引处的张量

来自分类Dev

如何使用Java CodeModel将值分配给数组的特定索引

来自分类Dev

将值分配给R中数组的特定维

来自分类Dev

将值分配给R中数组的特定维

来自分类Dev

将特定值分配给布尔数组

来自分类Dev

将索引分配给PHP数组

来自分类Dev

将值分配给NumPy数组

来自分类Dev

将值分配给数组指针

来自分类Dev

将值分配给动态数组

来自分类Dev

Java:将值分配给数组

来自分类Dev

如何将索引数组值分配给多维数组?

来自分类Dev

通过逻辑索引将值分配给数组不起作用

来自分类Dev

Common Lisp CFFI:将结构值分配给数组索引

来自分类Dev

如何将字符串值分配给php数组的索引?

来自分类Dev

将值分配给数组中的每个其他索引

来自分类Dev

动态数组初始化将哪些默认值分配给其索引?

来自分类Dev

JavaScript-将数组索引分配给返回值不起作用

来自分类Dev

无法将函数结果分配给数组索引

来自分类Dev

无法将函数结果分配给数组索引

来自分类Dev

数据框-将值分配给相应的索引

来自分类Dev

根据其索引值将类分配给LI

来自分类Dev

将值从数组分配给结构数组

来自分类Dev

将值分配给数组中的数组

来自分类Dev

将特定的颜色分配给特定的值

来自分类Dev

如何根据 ID 将值数组从 json 分配给特定表

来自分类Dev

将值分配给数组,不保留值?

来自分类Dev

新的多维数组将值从数组分配给第二个数组的索引

来自分类Dev

perl数组不正确地将值分配给索引(保留基数会覆盖相同的索引)

来自分类Dev

将值分配给数组中的char