如何在BASH中打印出一个数组,并在每个值和最后一个换行符之间使用字段分隔符。
单个printf最接近的是printf '%s|' "${arr1[@]}"
其中|是字段分隔符。这个问题是最后没有换行符。 \ n我尝试放入其中的任何组合要么在每个条目上放置一个换行符,要么根本没有放入换行符!
有没有办法在一行上完成,或者我需要使用printf '%s|' "${arr1[@]}";printf "\n"
谢谢,
杰兰特
答案 0 :(得分:8)
是的,你需要两个命令。 printf '%s|' "${array[@]}"; echo
完全是传统的。
或者,如果您不想要跟踪|
,则可以暂时修改IFS
以使用所选分隔符作为其第一个字符,并使用"${array[*]}"
:
IFS="|$IFS"; printf '%s\n' "${array[*]}"; IFS="${IFS:1}"
答案 1 :(得分:2)
如果您不希望打印let permissions = ["public_profile", "email", "user_friends"]
PFFacebookUtils.logInInBackground(withReadPermissions: permissions) { (user : PFUser?, error: Error?) in
,您也可以将其删除,只需放入一个空间或您想要使用的任何分隔符(例如,或 - ):
|
如果您经常需要这个,你应该使用一个函数,因为反复编写相同的代码并不是最好的方法:
printf '%s ' "${arr1[@]}" ; printf '\n'
用法:
print_array ()
{
# run through array and print each entry:
local array
array=("$@")
for i in "${array[@]}" ; do
printf '%s ' "$i"
done
# print a new line
printf '\n'
}
示例:
print_array "${array_name[@]}"
输出:
array01=(one two three)
print_array "${array01[@]}"
echo "this should be a new line"