我有一个名为mail_status.txt的文件。文件的内容如下。
1~auth_flag~
2~download_flag~
3~copy_flag~
4~auth_flag~
5~auth_flag~
6~copy_flag~
我想对该文件执行一些操作,以便最后我应该获得三个变量,并且它们各自的值应如下所示:
auth_flag_ids="1,4,5"
download_flag_ids="2"
copy_flag_ids="3,6"
我对这种语言很陌生。如果需要更多详细信息,请告诉我。
谢谢
如果要bash基于文件内容生成变量,请尝试以下操作:
# read the file and extract information line by line
declare -A hash # delcare hash as an associative array
while IFS= read -r line; do
key="${line#*~}" # convert "1~auth_flag~" to "auth_flag~"
key="${key%~*}_ids" # convert "auth_flag~" to "auth_flag_ids"
hash[$key]+="${line%%~*}," # append the value to the hash
done < "mail_status.txt"
# iterate over the hash to create variables
for r in "${!hash[@]}"; do # r is assigned to "auth_flag_ids", "download_flag_ids" and "copy_flag_ids" in tern
printf -v "$r" "%s" "${hash[$r]%,}" # create a variable named "$r" and assign it to the hash value by trimming the trailing comma off
done
# check the result
printf "%s=\"%s\"\n" "auth_flag_ids" "$auth_flag_ids"
printf "%s=\"%s\"\n" "download_flag_ids" "$download_flag_ids"
printf "%s=\"%s\"\n" "copy_flag_ids" "$copy_flag_ids"
首先,它读取文件的各行,并逐行提取变量名称和值。它们存储在关联数组中hash。 接下来,迭代键的hash名称以创建名称为“ auth_flag_ids”,“ download_flag_ids”和“ copy_flag_ids”的变量。 printf -v var创建一个变量var。该机制对于引起对变量的间接引用很有用。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。