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"
我需要用变量替换临时存储的文件。 我从 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"