Используйте LVM (http://tldp.org/HOWTO/LVM-HOWTO/) или:
dd if=/dev/zero of=/tmp/file_fs1 count=20 bs=1M
mke2fs -F /tmp/file_fs1
mkdir -p /dev1/folder1
mount -o loop /tmp/file_fs1 /dev1/folder1
dd if=/dev/zero of=/tmp/file_fs2 count=10 bs=1M
mke2fs -F /tmp/file_fs2
mkdir /dev1/folder1/folder1_2
mount -o loop /tmp/file_fs2 /dev1/folder1/folder1_2
df-h:
/dev/loop0 20M 173K 19M 1% /dev1/folder1
/dev/loop1 9,7M 92K 9,1M 1% /dev1/folder1/folder1_2
Зоредаш указал мне на это в чате, и poige упомянул об этом в своем ответе: эту проблему можно решить с помощью подоболочки.
Когда мне пришлось перейти с цикла for
, который считывал одну переменную из моего grep за раз, на цикл while read var1 var2
, который позволил мне читать несколько переменных , Я смог привязаться к временным переменным, с которыми я работал в цикле while, используя круглые скобки для определения явной подоболочки. Вот пример:
sum=0
grep volume configfile | head -n1 | (while read var1 var2; do
let sum=var1+var2
done
echo "The sum is $sum.")
Без круглых скобок вы всегда будете отображать сумму, равную 0. С ними вы будете отображать сумму первых двух значений в первой совпадающей строке вашего grep.
Кроме того, как указывает Пойдж в другом ответе вы можете использовать подоболочку для заполнения переменной в области видимости следующим образом:
var=$( cat file | while read a b; do
sum=a+b
echo "$sum"
done)
echo "$var"
В этом случае
По крайней мере двумя способами - вернуть код ошибки и проверить его или обернуть код вспомогательной оболочки:
Res=$(cat /etc/hosts | while read h _rest; do
[ "$h" = 'fe00::0' ] && echo 'Found'
done
)
echo $Res