2012-03-16 76 views
1

我想要做的是得到echo的輸出,然後做一個字符串比較。 例子:初學者bash:如何在字符串比較測試中使用echo輸出?

var=echo "Some string" 

if [ var = "* string" ] 
then 
echo true 
else 
echo false 
fi 

這裏的另一種嘗試:

if [ (echo "Some string") = "* string" ] 
then 
echo true 
else 
echo false 
fi 

沒有什麼工作。

+1

請注意,捕獲echo的輸出通常是毫無意義的 - 您正在使用shell字符串(「Some字符串」),將echo寫爲輸出,然後捕獲該輸出並將其轉換回shell字符串。何必?也就是說,不是'var =「$(echo」Some string「)」',而是使用'var =「一些字符串」'。 – 2012-03-16 20:36:59

回答

0

嘗試:

if [ `echo "Some string"` = "* string" ]; then 
(other commands) 
fi 

或替代,

if [ $(echo "Some string") = "* string" ]; then 
(other commands) 
fi 

需要注意的是,你還需要一個分號then關鍵字之前。

+0

「...在'then'關鍵字之前的分號 - 或換行符。 – 2012-03-17 17:52:45

3

您可以使用命令替換:

var=$(echo "Some string") 
if [ "$var" = "* string" ] 

或:

if [ "$(echo "Some string")" = "* string" ] 

注意,我添加了雙引號。它們很重要,否則Bash會把事情分解成多個單詞; [ Some string = "* string" ]將不起作用。出於這個原因,以及其他相關的人,我建議使用[[ ]]代替[ ],這是關於不那麼嚴格:

if [[ $(echo "Some string") = "* string" ]] 

但它實際上聽起來像你想:

if [[ $(echo "Some string") == *" string" ]] 

將執行模式匹配而不是比較確切的字符串。