我正在编写一个脚本来将串行数据从 USB 端口记录到文件中,并且我正在使用script
和picocom
来记录数据,如下所示:
sudo script -a -c 'sudo picocom /dev/ttyUSB0 | ts "%Y-%b-%d %H:%M:%S10"' /usr/local/logs/device1.log
工作正常,我想将它包装在一个openPort
脚本中,这样我就可以调用openPort device1 USB0
.到目前为止我已经
sudo script -a -c 'sudo picocom /dev/tty"${2}" | ts "%Y-%b-%d %H:%M:%S10"' /usr/local/logs/${1}.log
不幸的是,它没有打开 COM 端口。我认为问题在于script
启动一个新的会话来执行sudo picocom /dev/tty"{2}"
而不是使用从openPort
.有没有办法正确地传递论点?
答案1
单引号内的所有内容都不会展开,因此只需从引号中删除此参数即可:
sudo script -a -c 'sudo picocom /dev/tty'"${2}"' | ts "%Y-%b-%d %H:%M:%S10"' /usr/local/logs/${1}.log
壳牌将负责将所有部分合并在一起。