2014-04-09 61 views
0

我是bash腳本的新手。所以,我需要幫助。下面的命令打印出USB序列號。但我不知道如何將它存儲在一個字符串中。因爲我想與其他字符串進行比較以查看它們是否匹配。其他字符串可以是任何字符串。所以,如果有人能幫我寫代碼,我會非常感激。先謝謝了。打印出usb序列號的bash腳本

lsusb -v | awk '/iSerial/ {if ($2 == "3" || $2 == "2") {print $3}}' 

anubhava,這是正確的,如果我想比較兩個字符串。

#!/bin/sh 
string="asd11ds" 
output=$(lsusb -v | awk '/iSerial/ && ($2 == "3" || $2 == "2")) {print $3}') 
echo $output 
if [[$output==$string]];then 
echo"the two string are the same/are different" 
fi 

回答

1

您使用$(...)符號(命令替換)來存儲一個命令的輸出。

您的awk也可以縮短:

output=$(lsusb -v | awk '/iSerial/ && ($2 == "3" || $2 == "2")) {print $3}') 
+0

anubhava,這會是正確的,如果我想比較兩個字符串。輸出= $(lsusb -v | awk'/ iSerial/&&($ 2 ==「3」|| $ 2 ==「2」)){print $ 3}'輸入= $(lsusb -v | awk'/ iSerial/) 回聲$輸出 如果[[$輸出== $字符串];然後 回聲「這兩個字符串是相同/不同」 網絡 – user3513915

+0

不要在評論中發表的代碼。編輯你的問題並在那裏發佈你的代碼。 – anubhava

+0

你需要使用:'if [[「$ output」==「$ string」]];那麼 回聲「這兩個字符串是相同的/不同的」 fi' – anubhava

0

,因爲你的問題標籤bash,我提供bash腳本

#!/usr/bin/env bash 

string="asd11ds" 
output=$(lsusb -v | awk '/iSerial/ && ($2 == "3" || $2 == "2")) {print $3}') 

echo $output 

if [[ "$output" == "$string" ]]; then 
echo "the two strings are same" 
else 
echo "the two strings are different" 
fi 
+0

非常感謝你。 – user3513915

+0

如果這個答案有幫助,你需要投票,如果它解決了你的問題,你需要接受它 – BMW