我想知道是否有人做过这种事情:
我需要在脚本中使用parted来进行一些狡猾的操作。我正在尝试修改扩展分区,该扩展分区包含我已启动的分区,因此我收到一个确认请求,导致在脚本模式下导致错误退出。
当我手动执行此操作时,它会起作用。
因此,我尝试通过以下脚本将输入的内容分为部分内容:
#!/usr/bin/env bash
parted /dev/sda << EOT
resizepart
4
y
33593343s
Yes
I
EOT
不幸的是,这行不通。我得到
root@19912ac:/tmp# ./test.sh
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) resizepart
Partition number? 4
Warning: Partition /dev/sda4 is being used. Are you sure you want to continue?
(parted) y
align-check TYPE N
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkpart PART-TYPE [FS-TYPE] START END make a partition
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition
quit exit program
rescue START END rescue a lost partition near START and END
resizepart NUMBER END resize partition NUMBER
rm NUMBER delete partition NUMBER
...
在要求我确认/ dev / sda4的修改之前,看起来一切顺利。我的下一个输入(y)显示在命令行上,但此后我仅获得帮助信息。
有人尝试过吗?
答案 0 :(得分:0)
---pretend-input-tty
有一个隐藏的标志(我猜---
表示它是供高级用法之类的!)。我发现可以在类似于您的脚本中使用它:
脚本
#!/bin/bash
echo "Resizing partition ${2} on ${1} with new end ${3}"
parted "${1}" ---pretend-input-tty <<EOF
resizepart
${2}
${3}
Yes
quit
EOF
echo "Done"
答案 1 :(得分:0)
另一种没有 EOF 的方法是存在的:
echo -e "resizepart\n1\nYes\n100%\nprint free\nquit" | sudo parted /dev/vda ---pretend-input-tty