unix和linux的循环内部变量的传递

unix和linux的循环内部变量的传递,第1张

其实这种问题"通常"不是shell的问题(刚刚试了一下Linux下用ksh...没有这问题)

一般来说,这个状况应该是kernel的问题

SunOS跟一般Linux在行为上有很大的不同...甚至编译器(compiler)都不太一样

因为solaris 与Linux都属于Unix Like所以用类似的shell

至于解决...建议是改用csh会有比较多的功能

使用上比较符合深一层的shell 设计

for i in $a $b $c $d

do

   echo $i

done

如果a b c d为字符串变量且含有空格,建议放在双引号中,写为 "$a" "$b" "$c" "$d"

这个需要更改 shell分隔符为换行在for循环之前修改IFS变量IFS=$'\n' OLDIFS="$IFS"for i in `find . `doecho "$i"doneIFS="$OLDIFS"这样循环就会以换行作为单词分界.你的文件名如果出现换行,那就无能为力。虽然linux 支持文件名包含特殊字符但并不推荐,会导致别的脚本出错误。通常用下划线或短线代替空格。还有一种用find some|while read idoecho "$i"done用read i,每个循环读取一行,等价与用换行作为分隔符。记得采纳


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/6246236.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-19
下一篇2023-03-19

发表评论

登录后才能评论

评论列表(0条)

    保存