您的位置:首页 > 运维架构 > Shell

linux shell bash使用管道|和read结合时问题解决

2015-07-22 10:53 567 查看
最近在将ksh转成bash运行的时候出现了问题。代码如下:

echo $1 | sed 's/\..*$/''/' | read FILE_NAME


当使用ksh执行的时候没有问题,FILE_NAME能获取到正确的值。但当使用bash执行时,FILE_NAME值为空。

找了半天也不知道什么原因,最后找到了一种解决方法。代码如下:

read FILE_NAME <<< ` echo $1 | sed 's/\..*$/''/' `



上面的代码有两点需要注意:

①使用了 <<< ,这个叫“here string",中文不知道叫什么,具体用法可以参考:http://www.360doc.com/content/10/0303/18/155970_17452864.shtml

②<<<之后的代码使用了反单引号括了起来,否则执行会报错。

参考:http://bbs.chinaunix.net/thread-1821214-1-1.html

linux中查看现在使用的shell是ksh还是bash?以及怎样修改?

查看系统支持的shell: cat /etc/shells






查看现在使用的shell:






修改默认shell:



具体解释清参考:http://blog.chinaunix.net/uid-20722281-id-160012.html

另外,修改了系统默认shell之后不会立即生效,之后再次登录系统修改的shell才会生效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: