拥有以下简单的bash脚本
#!/bin/bash
mtp-files > test_list.txt
echo "Hello World"
ID="$(cat test_list.txt | egrep '^(File) ID: ')"
#read FILE_ID <<<"$ID"
echo $ID
打印出来
File ID: 6 File ID: 6 File ID: 6
但我需要的是&#34;文件ID&#34;的第一个出现的整数值。或6.
我的脚本需要进行哪些更改?
这是test_list.txt的内容
libmtp version: 1.1.10
mtp-files: Successfully connected
Foo device detected, assigning default bug flags
Listing File Information on Device with name: Foo Device
File ID: 6
Filename: 20161208_155851.jpg
File size 658911 (0x00000000000A0DDF) bytes
Parent ID: 2
Storage ID: 0x00010001
Filetype: JPEG file
File ID: 6
Filename: 20161208_155851.jpg
File size 658911 (0x00000000000A0DDF) bytes
Parent ID: 2
Storage ID: 0x00010001
Filetype: JPEG file
File ID: 6
Filename: 20161208_155851.jpg
File size 658911 (0x00000000000A0DDF) bytes
Parent ID: 2
Storage ID: 0x00010001
Filetype: JPEG file
OK.
答案 0 :(得分:0)
您可以使用此grep
命令仅打印第一个ID,而不是awk
:
id=$(awk -F'[ \t]*:[ \t]*' '$1 == "File ID"{print $2; exit}' test_list.txt)
echo "$id"
6
-F'[ \t]*:[ \t]*'
将输入字段分隔符设置为:
,并由可选空格包围。$1 == "File ID"
将确保我们在:
exit
在首次打印后退出。