bash - 我如何克服脚本中的分离确认请求

标签 bash parted

我想知道是否有人做过这样的事情:

我需要在脚本中使用 parted 做一些狡猾的操作。我正在尝试修改包含我已启动的分区的扩展分区,因此我收到一个确认请求,导致在脚本模式下错误退出。

当我手动执行此操作时,它会起作用。

因此,我尝试将我的输入通过管道传输到 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) 显示在命令行上,但在那之后我只能获得帮助信息。

有人试过这个吗?

最佳答案

有分手的隐藏标志---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"

关于bash - 我如何克服脚本中的分离确认请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52509644/

相关文章:

可以接受无限参数的 Linux Bash 脚本

bash - 来自文件名的挂载点 - 可移植的方式

linux - 在linux中根据内容拆分文件

bash - 有人可以用简单的英语解释这个简短的 getopts bash 脚本吗? (UNIX)

Bash:到终端 session 的脚本输出停止,但脚本正常完成

ansible parted 自动创建分区并获取编号并动态启动