我正在使用手动填充文件,但在解析它时遇到了问题。我的文件输入文件无法更改,我的代码语言无法从 bash 脚本更改。
我做了一个简单的例子让你更容易^^
var="hey","i'm","happy, like","you"
IFS="," read -r one two tree for five <<<"$var"
echo $one:$two:$tree:$for:$five
现在我想你已经看到了这里的问题。我想得到
hey:i'm:happy, like:you:
但我明白了
hey:i'm:happy: like:you
我需要一种方法来告诉read
“”比 IFS 更重要。我已经阅读了有关该eval
命令的信息,但我不能冒这个风险。
最后,这是一个目录文件,麻烦的字段是描述字段,因此它基本上可以包含任何内容。
看起来像这样的原始文件
"type","cn","uid","gid","gecos","description","timestamp","disabled"
"type","cn","uid","gid","gecos","description","timestamp","disabled"
"type","cn","uid","gid","gecos","description","timestamp","disabled"
编辑#1
我会举一个更好的例子;我上面使用的那个太简单了,@StefanHegny 发现它会导致另一个错误。
while read -r ldapLine
do
IFS=',' read -r objectClass dumy1 uidNumber gidNumber username description modifyTimestamp nsAccountLock gecos homeDirectory loginShell createTimestamp dumy2 <<<"$ldapLine"
isANetuser=0
while IFS=":" read -r -a class
do
for i in "${class[@]}"
do
if [ "$i" == "account" ]
then
isANetuser=1
break
fi
done
done <<< $objectClass
if [ $isANetuser == 0 ]
then
continue
fi
#MORE STUFF APPEND#
done < file.csv
所以这是代码的一小部分,但它应该解释我的工作。有file.csv
很多这样的行:
"top:shadowAccount:account:posixAccount","Jdupon","12345","6789","Jdupon","Jean Mark, Dupon","20140511083750Z","","Jean Mark, Dupon","/home/user/Jdupon","/bin/ksh","20120512083750Z","",""