source还有这种奇怪的用法?

sh/bash/dash/ksh/zsh等Shell脚本
回复
longf0720
帖子: 14
注册时间: 2018-03-09 15:15
系统: Ubuntu16.04

source还有这种奇怪的用法?

#1

帖子 longf0720 » 2018-03-13 20:17

$ cat test.sh
HA=/user/lfs/go/4/entry
LA=${HA/\/go\/4\/entry}
echo $LA

$ sh test.sh
test.sh: 2: test.sh: Bad substitution

$ source test.sh
/user/lfs


source还有这种奇怪的功能,从来没见过呢,哪位大神给解释一下文件第二行是啥意思,
为什么source和bash还有这种奇怪的区别


跪谢
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: source还有这种奇怪的用法?

#2

帖子 poloshiao » 2018-03-13 21:06

http://manpages.ubuntu.com/manpages/tru ... .3tcl.html
source - Evaluate a file or resource as a Tcl script
This command takes the contents of the specified file or resource and passes it to the Tcl interpreter as a text script.
The return value from source is the return value of the last command executed in the script.
头像
lilydjwg
论坛版主
帖子: 4248
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: source还有这种奇怪的用法?

#3

帖子 lilydjwg » 2018-03-13 22:15

一点也不奇怪。奇怪的是,没人告诉你 sh 和 bash 不一样吗?
longf0720
帖子: 14
注册时间: 2018-03-09 15:15
系统: Ubuntu16.04

Re: source还有这种奇怪的用法?

#4

帖子 longf0720 » 2018-03-15 16:04

lilydjwg 写了:一点也不奇怪。奇怪的是,没人告诉你 sh 和 bash 不一样吗?
查了一下 系统的sh指向的是dash,换成bash就好了

但是第二行为什么可以那么用?
头像
lilydjwg
论坛版主
帖子: 4248
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: source还有这种奇怪的用法?

#5

帖子 lilydjwg » 2018-03-15 18:00

longf0720 写了:
lilydjwg 写了:一点也不奇怪。奇怪的是,没人告诉你 sh 和 bash 不一样吗?
查了一下 系统的sh指向的是dash,换成bash就好了

但是第二行为什么可以那么用?
因为 bash 就是这样设计的。man bash 然后搜「Parameter Expansion」。
longf0720
帖子: 14
注册时间: 2018-03-09 15:15
系统: Ubuntu16.04

Re: source还有这种奇怪的用法?

#6

帖子 longf0720 » 2018-03-16 18:04

lilydjwg 写了:
longf0720 写了:
lilydjwg 写了:一点也不奇怪。奇怪的是,没人告诉你 sh 和 bash 不一样吗?
查了一下 系统的sh指向的是dash,换成bash就好了

但是第二行为什么可以那么用?
因为 bash 就是这样设计的。man bash 然后搜「Parameter Expansion」。
查到了好多参数展开的知识 :em11
回复