C#程序正在使用一个参数调用shell脚本。该参数是一个UNIX命令:
port="/dev/ttyUSB0";
procStartInfo = new ProcessStartInfo("sudo", "sh test.sh " +
"$(udevadm info - a - n " + port + " | grep '{serial}' | head -
n1)");
我的shell脚本是 test.sh :
echo $@
它将显示以上命令:
$(udevadm info - a - n /dev/ttyUSB0 | grep '{serial}' | head - n1)
但不是预期的结果。
请帮助。如何运行此命令
答案 0 :(得分:0)
您可以致电sh -c "COMMAND"
。 COMMAND
可以是管道,并支持各种重定向。就像在shell命令行中输入COMMAND一样。您只需通过"
来使\"
转义。同样,必须对单引号内的$
进行转义。
sh -c 'COMMAND'
(在COMMAND
周围使用单引号)是一种选择,如果在COMMAND
中不使用单引号并且您不想扩展$
。
顺便说一句,始终在双引号$@
中使用"$@"
。否则,将在空格处进行单词拆分。