【发布时间】:2017-05-28 20:36:10
【问题描述】:
目前正在开发以下版本的 Bash:
GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu)
我当前的脚本:
#!/usr/bin/env bash
function main() {
local commands=$@
for command in ${commands[@]} ; do
echo "command arg: $command"
done
}
if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
set -e
main $@
fi
简单来说,如果是被调用的脚本,这个脚本只会执行 main,类似于 Python 的 if __name__ == '__main__' 约定。
在main 函数中,我只是循环遍历所有命令变量,但引号转义并未按预期发生:
$ tests/simple /bin/bash -c 'echo true'
command arg: /bin/bash
command arg: -c
command arg: echo
command arg: true
这里的最后一个参数应该被 Bash 解析为单个参数,但它被拆分为单个单词。
我做错了什么?我希望 echo true 显示为单个参数。
【问题讨论】:
标签: bash