【发布时间】:2018-01-02 13:39:42
【问题描述】:
请帮忙看看是否有办法使下面的脚本可行?
name='bob'
# below script reports 'bash: !: event not found' error
sh -c "echo $name; sleep 20 & pid1=$!; sleep 10 & pid2=$!; echo \"pid1: $pid1, pid2: $pid2\""
# below script $name will not become bob
sh -c 'echo $name; sleep 20 & pid1=$!; sleep 10 & pid2=$!; echo \"pid1: $pid1, pid2: $pid2\"'
[添加 01/03]
这个问题与this one有些重复,是我的错,原问题的描述不够清晰准确,我尝试创建一个新的,使其更具体和清晰。
【问题讨论】:
-
试试
sh -c 'echo '"$name"'; sleep 20 & pid1=$!; sleep 10 & pid2=$!; echo \"pid1: $pid1, pid2: $pid2\"' -
@hek2mgl 然后
$name不会被扩展(除非你单独export它)。 -
Like I already told you, 使用
set +H来防止 Bash 产生event not found错误。 -
@Cyrus 但是
sh没有这个问题。 Csh 风格的历史扩展 (mis) 功能是 Bash 扩展。 -
@tripleee:谢谢,我回滚了我的编辑。