arrays - 连接数组中的字符串
问题描述
我有一个已读入数组的全名。我正在尝试仅使用姓氏创建文件;姓氏可能包含应替换为下划线的空格。我的想法是创建一个文件名字符串,然后创建文件。我已经处理了只有一个姓氏的案件。我在使用带有空格的姓氏时遇到问题。这是我到目前为止所拥有的:
if [ "${#name_arr[@]}" -eq 2 ]; then
for i in "${name_arr[@]:1}";do # :1 because first element is their first name
last_name=$i
done
echo $last_name
else
for i in "${name_arr[@]:1}";do
last_name=${last_name}_${i}
done
echo $last_name
fi
其输出将所有名称与下划线连接起来。所以而不是:
Doe
Austen
Vaughn_Williams
Doe
它在回响:
Doe
Austen
Austen_Vaughn_Williams
Doe
解决方案
您不需要循环,也不需要检查列表的长度。只需用空格连接除第一个元素之外的所有元素即可获得姓氏。
last_name=${name_arr[*]:1} # Assuming the default value of IFS
last_name=${last_name// /_}
以分叉为代价,您可以在一行中完成此操作。
last_name=$(IFS='_'; echo "${name_arr[*]:1}")
推荐阅读
- python - 将 json 的 url 解析为一个列表,其中包含来自 python 中特定 json 键的所有值
- tensorflow - 输出层中 Softmax 激活函数的输出计算值与实际值不匹配
- angular - 多用户应用程序附加多个帐户
- vb.net - 我可以在 Windows 服务(vb.net)中调用/执行 vb6 应用程序吗?
- python - Selenium python,使用css只选择两个类
- flutter - 如何与来自 Flutter integration_test 的原生 UI 元素进行交互?
- python-3.x - Azure 函数触发 http Azure 函数
- python - 如何在正确的 PyQt5 QLineEdit 中更新所选项目?
- javascript - javascript中的array.splice函数
- scala - Spark Scala如何从列名的开头替换空格字符