![在 slurm 上的 bash 脚本中模拟用户输入](https://linux22.com/image/193928/%E5%9C%A8%20slurm%20%E4%B8%8A%E7%9A%84%20bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E6%A8%A1%E6%8B%9F%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5.png)
我相信我的问题与发现的类似这里但我对回复感到困惑(由于我的代表较低,我还无法对此问题发表评论)。
我有一个 bash 脚本,需要使用 slurm 运行,因此当脚本需要用户输入时,如下所示:
Enter y or yes if you want to continue Compass and used cached results.
脚本停止。这行代码运行后出现这一行:
compass --data compass_adipocytes_only_input_transposed.tsv --num-processes 10 --species mus_musculus
我该怎么做才能让我的脚本用“y”回复这个?
这是整个脚本
#!/usr/bin/env bash
#SBATCH --job-name=Compass
#SBATCH --ntasks=54
#SBATCH --output=compass.%j.out
#SBATCH --exclusive
# To activate this environment, use
. /tools/Miniconda3.7/etc/profile.d/conda.sh
conda activate /data04/projects04/MarianaBoroni/lbbc_members/lib/conda_envs/compass
which compass
compass --data compass_adipocytes_only_input_transposed.tsv --num-processes 10 --species mus_musculus
yes | compass
# To deactivate an active environment, use:
conda deactivate
exit
我用命令执行了
sbatch metabolismanalysis.sh
答案1
yes | myscript.sh
y\n
这将为您的脚本输出连续的流。如果您需要不同的字符/字符串,请使用yes foo
输出foo
。看是的手册页