#!/bin/bash
declare -a gpu_array=("rtx3060", "rtx3070", "rtx3080", "rtx3090", "rx6700")
#host = "http://192.168.1.31:5000/"
for gpu in ${gpu_array[*]}; do
gpu_url = $"http://192.168.1.31:5000/$gpu"
value = $(curl "${gpu_url}")
echo $value>> trial.txt
done
“"”trial.sh:第8行:值:找不到命令trial.sh:第7行:GPU_URL:未找到命令curl:(3)URL使用错误/非法格式或缺少URL trial.sh:第8行:值:找不到命令trial.sh:第7行:GPU_URL:未找到命令curl:(3)URL使用错误/非法格式或缺少URL trial.sh:第8行:值:未找到命令“"”
1条答案
按热度按时间ymzxtsji1#
数组元素之间用空格隔开,没有逗号,也不需要双引号,因为元素中不包含任何特殊字符,但它们不会造成伤害。
不要使用
$"..."
,它是用于本地化的。这里使用普通的"..."
就足够了,实际上,这里不需要任何引号:注意,赋值运算符两边没有空格,如果使用空格,bash会将变量名作为要运行的命令,将
=
作为它的第一个参数,这通常不是你想要的。顺便说一句,在数组上迭代的标准方法是
即使数组元素包含空格,它也能正常工作。
出于同样的原因,总是用双引号引变量是一个好的做法(除非你想在空格上拆分值)。
如果在某些shell中值为
-n
,这仍然会导致一些意外的结果,因此,更安全的做法是只对常量字符串使用echo,而对动态内容使用printf
。