Linux 用额外空格替换Bash命令:如何解决这个问题?
我想替换一些进程的编号,以找出其命令行,如下所示:Linux 用额外空格替换Bash命令:如何解决这个问题?,linux,bash,Linux,Bash,我想替换一些进程的编号,以找出其命令行,如下所示: > cat /proc/"`fuser /dev/ttyS0`"/cmdline cat: /proc/5231 /cmdline: No such file or directory 但是它看起来像是fuser在PID中添加了一个额外的空格。你知道如何解决这个问题吗 预期行为:我想使用fuser获取进程ID,并在第二步显示/proc//cmdline 我认为echo\“`fuser/dev/ttyS0`\”会告诉您有一个前导空格。
> cat /proc/"`fuser /dev/ttyS0`"/cmdline
cat: /proc/5231 /cmdline: No such file or directory
但是它看起来像是fuser
在PID中添加了一个额外的空格。你知道如何解决这个问题吗
预期行为:我想使用fuser
获取进程ID,并在第二步显示/proc//cmdline
我认为echo\“`fuser/dev/ttyS0`\”
会告诉您有一个前导空格。如果将操作分为两个步骤,则可以执行以下操作
u=`fuser /dev/ttyS0`
cat /proc/${u// /}/cmdline
因此,首先将
fuser
的结果分配给变量u
(该变量仍将包含空格),然后删除u
中的所有空格(使用/
开始模式替换将替换所有出现的模式,如果仅使用/
则只替换第一个出现的模式,在您的示例中这不会是问题).如果您唯一的问题是有额外的空白,您可以通过一个去除空白的sed
替换来传递它吗?请参见我的Debian压缩,fuser/dev/tty1
输出/dev/tty1:1038
:)或者像这样:u=($(fuser/dev/ttyS0));cat/proc/$u/cmdline正在定义索引数组。它将忽略前导/尾随的不带引号的空格。而$$arr
w/o下标与${arr[0]}
相同。