我有一个全名,已经被读入数组。我正在尝试仅使用姓氏创建文件;姓氏可能带有空格,应使用下划线代替。我的想法是创建一个文件名字符串,然后创建文件。我已经处理过只有一个姓氏的案件。我在使用空白的姓氏时遇到麻烦。这是我到目前为止所拥有的:
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}")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句