在 c shell 中找不到命令错误

Command not found error in c shell

我有以下脚本:

set blah1 = 12743
set sid1 = `"ps -p $blah1 -o sid"`
echo "$sid1"

我预计会发生的是 $blah1 将被替换为它的值,然后命令将被执行,它的值被放置在 sid1 中。相反,我收到一个错误:

ps -p 12743 -o sid: command not found. 

我的错误是什么?

谢谢。

您使用引号:

a b c d e

...表示:运行名为a的程序;参数是 bcde

"a b c d e"

... 表示:运行名为a b c d e的程序(文件名中有space个字符);没有参数。

错误消息表明 shell 正在搜索名为 ps -p 12743 -o sid.

的可执行文件

你的错误是双引号。

ps 命令接受一组参数。这些参数在反引号内的字符串中以空格分隔。通过使用双引号,您消除了空格分隔,并要求 shell 启动一个看起来像整个引号字符串的命令。

尝试:

set sid1 = `ps -p "$blah1" -o sid`

看看你的表现是否更好。

例如,尝试比较 shell 提示符下 ls -a 的输出与 "ls -a".

的输出
1% ls -a
.       ..
2% "ls -a"
ls -a: Command not found.

N.B。除了 csh(即 POSIX、Bash 等),其他 shell 也会发生同样的事情。