为了调试脚本,我正在打印包含文本的变量,这是非常标准的东西,只是变量的行为不符合预期。我发现我正在读取的文件的其中一行少于17个字符,进一步弄乱了脚本,因此我正在测试小于17的长度并尝试添加18个空格。发生的情况是将空格添加到变量的开头并覆盖那里的字母,而不是在我希望添加字母的末尾。长度计算正确显示为35。
do STR=$line
length=${#STR}
spaces=". ." <<<<18 spaces in here
end=end
if [ $length -le 17 ]
then
TEMPSTR=$STR
echo $TEMPSTR
echo $end
echo $length
TEMPSTR2="$TEMPSTR$spaces"
length=${#TEMPSTR2}
echo $TEMPSTR2
echo $length
fi
正在“ Fan Tray(8个空格)”行中读取以产生:
Fan Tray
end
17
. . <<< 18 spaces in here
35
我期望它显示:
Fan Tray
end
17
Fan Tray. . <<< 18 spaces in here
35
您是否要进行空间填充?
—
拉宾
好吧,我想最终是的。我想添加空格以使原始变量更长。这样一来,以后我在脚本中使用:'SpItem = $(echo“ $ STR” | cut -c1-17)''SpItem =“ $ {SpItem ## *()}”''时,它将剪切该项目正确并正确删除尾部空格。
—
安迪·肯德尔