我希望你能帮助我。我尝试分离一个字符串:
#!/bin/bash
file=$(<sample.txt)
echo "$file"
文件本身包含如下值:
(;FF[4]GM[1]SZ[19]CA[UTF-8]SO[sometext]BC[cn]WC[ja]
我需要的是一种提取[]之间的值并将它们设置为变量的方法,例如:
$FF=4
$GM=1
$SZ=19
and so on
但是,某些文件并不包含所有值,因此在某些情况下没有FF [*]。在这种情况下,程序应使用“ 99”的值
我该怎么做?
非常感谢你的帮助。克里斯问候
按你的要求:
while IFS=\[ read -r A B; do
[[ -z $B ]] && B=99
eval "$A=\$B"
done < <(exec grep -oE '[[:alpha:]]+\[[^]]*' sample.txt)
尽管使用关联数组会更好:
declare -A VALUES
while IFS=\[ read -r A B; do
[[ -z $B ]] && B=99
VALUES[$A]=$B
done < <(exec grep -oE '[[:alpha:]]+\[[^]]*' sample.txt)
在那里您可以使用键("${!VALUES[@]}"
)和值进行访问"${VALUES['FF']}"
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句