如果其他情况无法在bash ChromeOS中使用,

时间:2019-06-09 13:30:10

标签: bash google-chrome-os chromebook

我正在尝试制作一个bash脚本,该脚本基本上需要一堆.deb,将它们解压缩并将二进制文件和lib放在/ usr / local / opt / {lib} bin中。

该脚本检查/是否安装为ro或rw,以及是否将其安装为ro以将其重新安装为rw。 但是,在chromebooks上,为了将/作为rw挂载,您需要为有问题的分区删除remove_rootfs_verification。当为/启用rootfs_verification时,脚本无法回显上述内容,并且应退出1,而是继续执行。

这是我指的脚本的一部分

### ChromeOS's Specific!!!
# The following assumes rootfs_verification for / has already been removed 
if grep $rootfs /proc/mounts | grep ro; then
  mount -o remount,rw / &> mount.out 

elif 
 grep -iw 'read-write' mount.out; then 

   echo '\nrootfs_verification for the root partition must to be removed in order to remount,rw  /
To remove rootfs_verification run the following command and than reboot the system:
"sudo /usr/share/vboot/bin/make_dev_ssd.sh  --remove_rootfs_verification --partitions 4"'

else exit 1

fi

完整的WIP脚本可在此处https://pastebin.com/ekEPSvYy

中找到

这就是我执行它时发生的事情

localhost /usr/local # ./kvm_install.sh 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   124    0   124    0     0    322      0 --:--:-- --:--:-- --:--:--   345
100   135  100   135    0     0    170      0 --:--:-- --:--:-- --:--:--   170
100 60384  100 60384    0     0  57950      0  0:00:01  0:00:01 --:--:--  344k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   143    0   143    0     0    407      0 --:--:-- --:--:-- --:--:--   412
100   154  100   154    0     0    202      0 --:--:-- --:--:-- --:--:--   202
100 1298k  100 1298k    0     0   929k      0  0:00:01  0:00:01 --:--:-- 3020k
/dev/root / ext2 ro,seclabel,relatime,block_validity,barrier,user_xattr,acl 0 0
./kvm_install.sh: line 31: /etc/env.d/30kvm: Read-only file system
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 66802  100 66802    0     0  69657      0 --:--:-- --:--:-- --:--:-- 74555
./kvm_install.sh: line 39: ar: command not found
tar (child): control.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
md5sum: md5sums: No such file or directory

基本上找不到这里发生的情况是ar,因为脚本无法将PATH变量添加到/etc/env.d/30kvm,因为无法安装根分区,因为已在/上启用了roots_verification。

我曾尝试在[[此处建议,但在[[中添加了elif“ grep”命令,但这没有用,并进一步增加了语法问题。

我正在学习bash脚本编写的基础知识。如果脚本编写不当,我深感抱歉。

谢谢

我最终还是这样做了。

 if grep $rootfs /proc/mounts | grep 'ro,'; then
      mount -o remount,rw / &> mount.out

if
    grep 'read-write' mount.out; then
     echo 'something to echo' && exit 1
    fi
    fi

这不是很漂亮,但是直到我找到/学习一种更好的实现循环的方法,它才起作用。

1 个答案:

答案 0 :(得分:0)

使命令的输出成为变量:

$variable="$(command)"

如果要使用grep,请使用以下语法:

command | grep text

如果要使用if语句使用语法:

if [ some text ]; text
    commands
elif [ some text ]
    commands
else
    commands
fi

for the some text check this cart

grep -iw在chromebook上无效

如果要保存为$ rootfs的命令,rootfs的路径取决于很多情况

rootfs="$(rootdev -s)"

您还犯了一些错误,就是“ |”和“&”

command1 | command to edit command1
command1 || run this command if command1 fails
command1 && run this command if command1 succeeds