从命令行输入结果不正确

网络系统管理员

我正在尝试读取以表格格式输出的文件。我能够从 aws 区域读取具有 Volume description、snapshotId 和 TimeStarted 列表的文件。我要求用户输入卷名并输出输入的卷的快照 ID。该列表包含volumes0 到volumes30。

问题是,当用户输入Volume0时,它会正确输出snapshotId,但如果用户输入Volume20,它只会输出|。我的猜测是因为正在读取的原始文件是表格格式,它正在这样做。最初我虽然可以设置一个条件,如果用户输入 Volume0,则打印 snapshotId,否则如果用户输入 Volume20,则打印快照 ID。

我正在寻找一种更好的方法来做到这一点。读取文件时如何忽略表格格式,是否应该将其转换为文本格式?如何?或者在阅读时如何忽略任何格式?这是我的 bash 脚本:

readoutput() {

  echo "Hello, please tell me what Volume you are searching for..(Volume?):"
    read volSearch
    echo "Searching for newest SnapshotIds from /Users/User/Downloads/GetSnapId for:" $volSearch
    sleep 5
    input="/Users/User/Downloads/GetSnapId"

    if x=$(grep -m 1 "$volSearch" "$input")
      then
        echo "$x"
    else
      echo "$volSearch not found..ending search"
    fi


        extractSnap=$(echo "$x" | grep "snap-" | awk '{print $7}')

        echo $extractSnap

}

readoutput
破坏者

awk 不太聪明的问题,并尝试自动确定表分隔符。在 Volume0 的第一行中,您在垂直线之前有空间,因此空间和垂直线都是分隔符,但在下一行,您没有空间,因此需要错误的列。接下来试试:

extractSnap=$(echo "$x" | cut -d'|' -f3 | cut -d'-' -f 2)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章