
最近在将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才会生效。