Bash 脚本不允许将内容交给变量,这部分是for循环的计数器

Bash script does not allow to handover content to a variable, which is partly the counter of a for loop

我需要用变量替换临时存储的文件。 我从 bitbucket 存储库中调用了 6 个文件,并希望将每个文件内容放在一个自己的变量中。

# declare array for all files
declare -a file_array=("one.txt" "two.txt" "three.txt" "four.json" "five.txt" "six.txt")

for file in "${file_array[@]}"
do 
     echo "$file"
     "file_$file='$(curl -k -s -X GET -H "${var1}" -H "${var2}" "${var3}${var4}")'"

done

这段代码只是给我一个错误。好像一直都是把文件的内容当作命令:

$'file_one.txt=\'<<file content>>'': command not found

这里你至少有两个问题:你试图在变量名中加一个点,这是无效的,你试图给表达式赋值。再加上你的引述也很奇怪。

您可以使用 namerefs (declare -n) 并替换点,例如,用下划线:

# declare array for all files
declare -a file_array=("one.txt" "two.txt" ...)

for file in "${file_array[@]}"; do 
  echo "$file"
  declare -n f="file_${file/./_}"
  f=$(curl -k -s -X GET -H "${var1}" -H "${var2}" "${var3}${var4}")
done
printf '%s\n' "$file_one_txt"