read line
n=1
bInString=0
bIsLastSpace=0
for(( i = 0; i < ${#line}; ++i));
do
temp=${line:i:1}
if [ "$temp" = "\"" ]; then
param[$n]=${param[$n]}$temp
if [ $bInString = 0 ]; then
bInString=1
else
bInString=0
echo "param $n : ${param[$n]}"
n=`expr $n + 1`
bIsLastSpace=1
fi
elif [[ "$temp" = " " ]] || [[ "$temp" = " " ]]; then
if [ $bInString = 1 ]; then
param[$n]=${param[$n]}$temp
elif [ $bIsLastSpace = 0 ]; then
bIsLastSpace=1
echo "param $n : ${param[$n]}"
n=`expr $n + 1`
fi
else
bIsLastSpace=0
param[$n]=${param[$n]}$temp
fi
doneshell从管道读取命令行并解析,双引号中有空格计算为一个参数
最新推荐文章于 2024-03-14 22:03:45 发布
本文详细解析了一个用于读取行并处理字符串的代码片段,包括如何使用循环遍历行,如何处理特殊字符如双引号,以及如何处理空格和换行符。通过理解这个代码片段,读者可以更好地掌握字符串处理技巧和shell编程中的常见操作。
1051

被折叠的 条评论
为什么被折叠?



