Bash 如何在shell脚本上使用echo保留前导空格?
我有一个源文件,它是合并在一起的多个文件的组合。我的脚本应该将它们分离到原始的单个文件中 每当我遇到以“FILENM”开头的行时,这意味着它是下一个文件的开始 文件中的所有详图线都是固定宽度的;所以,我现在遇到了一个问题,一个以前导空格开头的行在不应该被截断的时候被截断了 如何增强此脚本以保留前导空格Bash 如何在shell脚本上使用echo保留前导空格?,bash,shell,unix,scripting,Bash,Shell,Unix,Scripting,我有一个源文件,它是合并在一起的多个文件的组合。我的脚本应该将它们分离到原始的单个文件中 每当我遇到以“FILENM”开头的行时,这意味着它是下一个文件的开始 文件中的所有详图线都是固定宽度的;所以,我现在遇到了一个问题,一个以前导空格开头的行在不应该被截断的时候被截断了 如何增强此脚本以保留前导空格 while read line do lineType=`echo $line | cut -c1-6` if [ "$lineType" ==
while read line
do
lineType=`echo $line | cut -c1-6`
if [ "$lineType" == "FILENM" ]; then
fileName=`echo $line | cut -c7-`
else
echo "$line" >> $filePath/$fileName
fi
done <$filePath/sourcefile
读取行时
做
线型=`echo$line |切割-c1-6`
如果[“$lineType”==“FILENM”];然后
fileName=`echo$line | cut-c7-`
其他的
回显“$line”>>$filePath/$fileName
fi
done删除前导空格,因为read
将输入拆分为单词。要解决此问题,请将IFS
变量设置为空字符串。像这样:
OLD_IFS="$IFS"
IFS=
while read line
do
...
done <$filePath/sourcefile
IFS="$OLD_IFS"
OLD_IFS=“$IFS”
如果=
读行时
做
...
完成要保留IFS
变量,您可以在时以以下方式写入:
而IFS=读取行
做
. . .
完成<文件
另外,要保留反斜杠,请使用read-r
选项。你应该因此获得奥斯卡奖。