【发布时间】:2016-01-04 01:00:37
【问题描述】:
我正在尝试编写一个脚本,将人名作为参数并使用他们的名字创建一个文件夹。但是在文件夹名称中,非 ascii 字符和空格有时会产生问题,所以我想将它们删除或更改为 ascii 字符。 我可以删除姓名和姓氏之间的空格,但我不知道如何更改 ş->s、ç->c、ğ->g、ı->i、ö->o。
这是我的代码:
#!/bin/bash
ARRAY=("$@")
ELEMENTS=${#ARRAY[@]}
for (( i=0;i<$ELEMENTS;i++))
do #C-like for loop syntax
echo ${ARRAY[$i]} | grep "[^ ]*\b" | tr -d ' '
done
我这样运行我的脚本 myscript.sh 'Çişil Aksoy' 'Cem Dalgıç'
它应该改变如下参数:CisilAksoy CemDalgic
提前致谢
编辑: 我找到了这个解决方案,这看起来不太漂亮,但它确实有效。
sed 's/ş/s/gI; s/ç/c/gI; s/ü/u/gI; s/ö/o/gI; s/ı/i/gI;'
EDIT2:已解决
#!/bin/bash
ARRAY=("$@")
ELEMENTS=${#ARRAY[@]}
for (( i=0;i<$ELEMENTS;i++))
do #C-like for loop syntax
v=$(echo ${ARRAY[$i]} | grep "[^ ]*\b" | tr -d ' ' | sed 's/ş/s/gI; s/ç/c/gI; s/ü/u/gI; s/ö/o/gI; s/ı/i/gI;')
mkdir $v
done
【问题讨论】: