将输出分配给自动 chroot 脚本中的变量

将输出分配给自动 chroot 脚本中的变量

对于我的一生,我无法弄清楚如何通过脚本进行 chroot,并为变量赋值。好的,我学会了如何在不停止脚本流程的情况下从脚本中 chroot 和执行命令:

#!/bin/bash
# Mini script for chrooting into chroot_dir and executing commands.

chroot_dir=$1
cat << EOF | chroot $chroot_dir /bin/bash
sysname=\`hostname\`
echo "You are running script.sh on ${sysname}"
EOF

运行此脚本,./script.sh "/chroot_dir/"我得到以下输出:

您正在运行 script.sh

看起来要么 sysname 永远不会被分配,要么 sysname 立即失去它的值。如何使用此方法为 sysname 赋值以进行 chroot?

答案1

原因是${sysname}在读取脚本时进行评估,而不是在稍后执行时进行评估。如果您\在美元 () 之前添加反斜杠 ( ) $,效果应该会更好。请注意,它与 无关chroot,但它是 的一个功能bash

相关内容