尝试运行bash命令来格式化来宾操作系统中的驱动器无济于事

时间:2015-08-06 16:28:08

标签: linux bash perl formatting virtual-machine

所以我尝试使用带有Perl和Bash的VMware VIX API从一台计算机到另一台计算机运行一系列命令,但是无法获得实际的命令序列。到目前为止,这是我的代码:

view.endEditing(true)

或至少一次迭代。这基本上抓住了未格式化的驱动器的名称,然后对其进行格式化。我尝试了无数组合尝试使用... $guestProgramName='/bin/bash'; $commandLineArgs='-c \'lsblk -o KNAME,FSTYPE,TYPE | grep disk | while IFS= read -r line; do disk=$(echo $line | cut -d " " -f 1) ls /dev/$disk[[:digit:]] &> /dev/null if [ $? == 2 ]; then echo -e "o\nn\np\n1\n\n\nw" | fdisk /dev/$disk mkfs.ext3 /dev/$disk mkdir /disk1 mount /dev/$disk /disk1 echo "/dev/$disk /disk1 ext3 defaults 1 2" >> /etc/fstab fi done\''; ... $err = VMRunProgramInGuest($vmHandle,$guestProgramName,$commandLineArgs,$options,$propertyListHandle); echobash来运行命令,同时尝试使用各种反斜杠转义的双引号和单引号的不同组合,所有无济于事。这很奇怪,因为如果我只是尝试将命令复制并粘贴到实际的VM中,它可以正常工作,但是来自另一个命令的命令无法执行任何操作。我想也许它可能必须是一个单行程才能工作,但我对bash很新,并且不确定如何用循环和诸如此类的东西来格式化。

我检查了错误代码,它的所有内容都为0(无错误),包括打开VM,检查VMware工具,登录guest虚拟机,运行程序,然后注销。此外,如果我将脚本更改为只回显到一个简单的文件,它工作正常,所以我知道这两个系统可以通信。我相信答案与引号/转义/反斜杠有关,在跨系统翻译时会导致误读,但我不确定,因为没有错误消息被抛出。

0 个答案:

没有答案