我需要能够拆分字符串,以便每个字符串都作为变量在我的shell中传递。正确地在UNIX shell中拆分字符串
我想是这样的:
$ cat test.sh
#!/bin/sh
COMPOPT="CC=clang CXX=clang++"
$COMPOPT cmake ../gdcm
我也试过一个bash具体的解决方案,但至今没有运气:
$ cat test.sh
#!/bin/bash -x
COMPOPT="CC=clang CXX=clang++"
ARRAY=($COMPOPT)
"${ARRAY[0]}" "${ARRAY[1]}" cmake ../gdcm
我总是得到非知识性错误消息:
./test.sh: 5: ./t.sh: CC=clang: not found
当然,如果我直接从运行的shell中尝试这个工程:
$ CC=clang CXX=clang++ cmake ../gdcm
比使用'eval'更安全吗?如果'$ COMPOPT'设置为'rm -rf /; ',它仍然会被执行,不是吗? –
不,我从来没有声称过安全,如果不小心的话,编写shell脚本有它自己的风险。 – anubhava