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]}
相同。