私は生涯の間にスクリプトを介してルートを変更し、変数に値を割り当てる方法を理解することはできません。いいですね。スクリプトフローを中断することなく、スクリプトからコマンドをルートに移動して実行する方法を学びました。
#!/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がすぐにその値を失うようです。この方法を使用してchrootのsysnameに値を割り当てるにはどうすればよいですか?
答え1
なぜなら、${sysname}
後で実行するのではなく、スクリプトを読むときに評価されるからです。\
dollar()の前にバックスラッシュ()を追加すると、うまく$
機能します。とは何の関係もありませんが、その機能であることに注意してchroot
くださいbash
。