Linux 如何在shell脚本中存储命令返回的值?

Linux 如何在shell脚本中存储命令返回的值?,linux,bash,shell,Linux,Bash,Shell,我不熟悉shell脚本。我有一个任务,我必须创建一个c程序的多个实例,在后台运行它们,并使用chrt实用程序更改它们的调度策略 在chrt实用程序中,我需要为每个进程提供进程ID,以更改其调度策略 现在,我必须将所有这些添加到shell脚本中,以自动化该过程 我的问题是,在创建实例之后,如何获取每个实例的进程ID并将其存储在变量中 gcc example.c -o w1 taskset 0x00000001 ./w1& taskset 0x00000001 ./w1& tasks

我不熟悉shell脚本。我有一个任务,我必须创建一个c程序的多个实例,在后台运行它们,并使用chrt实用程序更改它们的调度策略

在chrt实用程序中,我需要为每个进程提供进程ID,以更改其调度策略

现在,我必须将所有这些添加到shell脚本中,以自动化该过程

我的问题是,在创建实例之后,如何获取每个实例的进程ID并将其存储在变量中

gcc example.c -o w1
taskset 0x00000001 ./w1&
taskset 0x00000001 ./w1&
taskset 0x00000001 ./w1&
taskset 0x00000001 ./w1&

pidof w1

chrt -f -p 1 <pid1>     
gcc示例.c-o w1
任务集0x00000001./w1&
任务集0x00000001./w1&
任务集0x00000001./w1&
任务集0x00000001./w1&
pidof w1
chrt-f-p1
pidof w1将给出所有实例的进程ID。现在,我如何将所有这些ID存储在变量或数组中,并在chrt命令中传递它们?

阅读本文:

要将命令的输出存储在变量中,请执行以下操作:

pids=$(pidof w1)
for each in $pids
do
  # parse each values and pass to chrt command
  chrt -f -p 1 $each
done 
要使用该变量,请执行以下操作:

pids=$(pidof w1)
for each in $pids
do
  # parse each values and pass to chrt command
  chrt -f -p 1 $each
done 
阅读本文:

要将命令的输出存储在变量中,请执行以下操作:

pids=$(pidof w1)
for each in $pids
do
  # parse each values and pass to chrt command
  chrt -f -p 1 $each
done 
要使用该变量,请执行以下操作:

pids=$(pidof w1)
for each in $pids
do
  # parse each values and pass to chrt command
  chrt -f -p 1 $each
done 

您只需要
pidof
,因为您首先忽略了后台作业的进程ID

gcc example.c -o w1
pids=()
taskset 0x00000001 ./w1 & pids+=($!)
taskset 0x00000001 ./w1 & pids+=($!)
taskset 0x00000001 ./w1 & pids+=($!)
taskset 0x00000001 ./w1 & pids+=($!)

for pid in "${pids[@]}"; do
  chrt -f -p 1 "$pid"
done

特殊参数
$
包含最近后台进程的进程ID。

您只需要
pidof
,因为您首先忽略了后台作业的进程ID

gcc example.c -o w1
pids=()
taskset 0x00000001 ./w1 & pids+=($!)
taskset 0x00000001 ./w1 & pids+=($!)
taskset 0x00000001 ./w1 & pids+=($!)
taskset 0x00000001 ./w1 & pids+=($!)

for pid in "${pids[@]}"; do
  chrt -f -p 1 "$pid"
done

特殊参数
$
包含最近后台进程的进程ID。

是否从bash脚本启动每个进程?如果是,请使用
$创建后,它指的是在后台启动的上一个作业的PID。可能是重复的而不是使用
pidof
(可能会获取不相关进程的进程id),您可能更喜欢使用
jobs-p
(也可能会获取您不想要的PID。选择您的毒药)
chrt-f-p1$(jobs-p)
是否从bash脚本启动每个进程?如果是,请使用
$创建后,它指的是在后台启动的上一个作业的PID。可能是重复的而不是使用
pidof
(可能会获取不相关进程的进程id),您可能更喜欢使用
jobs-p
(也可能会获取您不想要的PID。选择您的毒药)<代码>chrt-f-p 1$(作业-p)