这是我的Bash脚本,它从温度传感器读取值并将它们显示在一行中。我想用逗号分隔我的数组元素,比如这个例子:[1,2,3,5]
,然后用这个字符串替换另一个文件中存在的一行。
temp.sh
:
#!/bin/bash
for ((i=0 ; 12 - $i ; i++))
do
x=$(cat /sys/bus/w1/devices/28-0000075292ed/w1_slave | grep "t=" | awk -F "t=" '{print $2/1000}')
field[$i]=$x
echo "${field[$i]}"
done | column
答案 0 :(得分:4)
所以我们可以这样做的一种方法是模仿许多语言提供的join()
功能:
function join()
{
local IFS="$1"
shift
echo "$*"
}
然后我们可以致电:
READINGS="[$(join "," "${field[@]})"]"
以下是一个例子:
$ MY_ARRAY=("one" "two" "three")
$ join "," "${MY_ARRAY[@]}"
one,two,three
这可以通过改变Bash的Internal Field Separator来实现。 $*
用于使用$IFS
作为分隔符扩展所有参数。
我们也可以避免使用join
函数,只需这样做:
READINGS="[$(IFS=","; echo "${field[*]}")]"
答案 1 :(得分:1)
谢谢,我找到了解决方案
#!/bin/bash
f="myArray_a = ["
for ((i=0 ; 12 - $i ; i++))
do
x=$(cat /sys/bus/w1/devices/28-0000075292ed/w1_slave | grep "t=" | awk - F "t=" '{print $2/1000}')
if [ $i -eq 11 ]
then
x=$(printf %.3f] $x)
f="$f $x"
echo "$f"
else
x=$(printf %.3f, $x)
f="$f $x"
fi
done | column