在我的程序中,我需要知道我可以运行的最大进程数.所以我写了一个脚本.当我在shell中运行它但在程序使用时它可以工作system("./limit.sh").我在bash工作.这是我的代码:
#/bin/bash
LIMIT=\`ulimit -u\`
ACTIVE=\`ps -u | wc -l \`
echo $LIMIT > limit.txt
echo $ACTIVE >> limit.txt
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
如果转义,命令替换语法不起作用.当你运行:
LIMIT=\`ulimit -u\`
Run Code Online (Sandbox Code Playgroud)
...你正在做的是运行一个名为的命令
-u`
Run Code Online (Sandbox Code Playgroud)
...使用名为LIMIT的环境变量包含值
`ulimit
Run Code Online (Sandbox Code Playgroud)
...除非你实际上有一个-u以其名称开头并在其名称中包含反引号的命令,否则这可能会失败.
这是因为使用反引号会使字符本身成为文字,然后运行一个var=value前面有一对或多对的命令,将这些对视为变量,以便在该单个命令的持续时间内在环境中导出.
#!/bin/bash
limit=$(ulimit -u)
active=$(ps -u | wc -l)
printf '%s\n' "$limit" "$active" >limit.txt
Run Code Online (Sandbox Code Playgroud)
$()命令替换语法.#!/bin/bash
exec >limit.txt # open limit.txt as output for the rest of the script
ulimit -u # run ulimit -u, inheriting that FD for output
ps -u | wc -l # run your pipeline, likewise with output to the existing FD
Run Code Online (Sandbox Code Playgroud)