linux - 更好的 bash 脚本将每行文件的两个条目读入两个变量

标签 linux bash

在 CentOS linux 上,我有包含以下条目的 /etc/fstab:

/dev/dsk/xfsvold00     /mnt/00vol    xfs    defaults   0     2
/dev/dsk/xfsvold01     /mnt/01vol    xfs    defaults   0     2
/dev/dsk/xfsvold02     /mnt/02vol    xfs    defaults   0     2
/dev/dsk/xfsvold03     /mnt/03vol    xfs    defaults   0     2
/dev/dsk/xfsvold04     /mnt/04vol    xfs    defaults   0     2
/dev/dsk/xfsvold05     /mnt/05vol    xfs    defaults   0     2
/dev/dsk/xfsvold06     /mnt/06vol    xfs    defaults   0     2

我正在开发一个用于挂载文件系统的 bash 脚本。我在尝试 将 /etc/fstab 中每一行的前两个条目放入两个变量中 并在安装中使用这些变量。例如,我需要:

dev/dsk/xfsvold00     /mnt/00vol
dev/dsk/xfsvold01     /mnt/01vol
dev/dsk/xfsvold02     /mnt/02vol
dev/dsk/xfsvold03     /mnt/03vol

我有以下工作原型(prototype)代码。

mountall() {
  # TODO: find a neat trick to get mntvol and mntpt.
  cat /etc/fstab | grep xfs > /tmp/tmpfstab
  while read mntvol mntpt var3; do
    mount -t xfs $mntvol $mntpt;
    rc=$?
    [ $rc -ne 0 ] && return $rc || echo "mount successful on $mntpt"
  done < /tmp/tmpfstab
  /bin/rm -rf /tmp/tmpfstab
  } 

有没有更好的实现方式?任何指针或提示表示赞赏。谢谢。

最佳答案

基于 @tripleee@Jahid (谢谢你们),对文件系统类型进行稍微严格检查的代码:

mountall () {
    awk '$3=="xfs"' /etc/fstab |
    while read -r mntvol mntpt var3; do
      mount -t xfs $mntvol $mntpt &&
       echo "mount successful on $mntpt" ||
       echo "mount failed on $mntpt" 
    done
}

关于linux - 更好的 bash 脚本将每行文件的两个条目读入两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37267704/

相关文章:

linux - 在 Linux 中以编程方式隐藏/显示窗口

python - 如何每天运行一次shell脚本?

ruby - 运行带有多个参数的 shell 命令

linux - 查找重复对比较两个文件

linux - 如何将别名输出发送到屏幕、文件和电子邮件?

mysql - 用于数据库备份的 Linux shell 脚本

python - Mac 和 Linux 中 lxml.etree.tostring() 中的缩进有所不同

bash 循环跳过注释行

php - 想通过php文件传递bash文件中的参数

linux - 在 bash 中扩展一个可能的相对路径