use*_*908 1 arrays string bash
这是我的 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
Run Code Online (Sandbox Code Playgroud)
因此,我们可以做到这一点的一种方法是模拟join()许多语言提供的功能:
function join()
{
local IFS="$1"
shift
echo "$*"
}
Run Code Online (Sandbox Code Playgroud)
然后我们可以调用:
READINGS="[$(join "," "${field[@]})"]"
Run Code Online (Sandbox Code Playgroud)
这是一个例子:
$ MY_ARRAY=("one" "two" "three")
$ join "," "${MY_ARRAY[@]}"
one,two,three
Run Code Online (Sandbox Code Playgroud)
这是通过更改 Bash 的内部字段分隔符来实现的。$*用于使用$IFS作为分隔符来扩展所有参数。
我们也可以避免使用该join函数,只需这样做:
READINGS="[$(IFS=","; echo "${field[*]}")]"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
498 次 |
| 最近记录: |