我想将bash数组变量写到文件中,并将每个元素换行。我可以使用for循环来做到这一点,但是还有另一种(更干净的)方式来与元素连接\n
吗?
这是一种利用bash参数扩展及其IFS
特殊变量的方法。
$ System=('s1' 's2' 's3' 's4 4 4')
$ ( IFS=$'\n'; echo "${System[*]}" )
我们使用子外壳程序来避免覆盖IFS
当前环境中的值。然后,在该子外壳中,修改的值,IFS
以使第一个字符为换行符(使用$'...'
引号)。最后,我们使用参数扩展将数组的内容打印为单个单词;每个元素由的第一个字符分隔IFS
。
要捕获到变量:
$ var=$( IFS=$'\n'; echo "${System[*]}" )
如果您的bash足够新(4.2或更高版本),则可以(并且应该)仍然使用printf
以下-v
选项:
$ printf -v var "%s\n" "${System[@]}"
无论哪种情况,您都可能不需要换行符var
。删除它:
$ var=${var%?} # Remove the final character of var
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句