在C及其他语言里运行shell命令的一点心得

因为工作需要,需要在C写的代码里运行一些shell命令。有一点心得。

先假设有如下命令要执行

[[ $var =~ $var2 ]] && echo hit          #如果$var中包含$var2的文本,则显示hit

首先,  [[ ]]命令必须要bash运行,所以直接写

system("[[ $var =~ $var2 ]] && echo hit");是不行的,会报告错误并且运行失败。

需要以

bash -c "命令"

的方式运行。

如果我们是在控制台里执行,那么运行

bash -c "[[ $var =~ $var2 ]] && echo hit"

结果正确,但是如果我们写成

system("bash -c \"[[ $var =~ $var2 ]] && echo hit\"");

同样失败,因为$是转义符,需要写成

system("bash -c \"[[ \\$var =~ \\$var2 ]] && echo hit\"");

才能正确运行。同理,"`" 前面也需要加上\\才能正确识别和运行。

看到这里,肯定有读者会说:“我直接把命令写到脚本里,运行脚本就行了。”

可是总有些环境既没有写权限,又需要执行动态命令。此时上面的经验就有用了。

你可能感兴趣的:(linux杂谈,shell,c语言,shell)