![](/img/trans.png)
[英]How to get output status of sqlplus command from shell/shell script?
[英]How to get output from shell script on mac?
我想在shell腳本中運行命令並檢查其輸出。如果它具有某些文本,我想將全局變量設置為特定的字符串。以下是我到目前為止所做的事情。 命令~/Library/Android/sdk/tools/android list | grep 'The "android" command is deprecated.
~/Library/Android/sdk/tools/android list | grep 'The "android" command is deprecated.
在終端中工作,但是在shell腳本中似乎不工作。 我在這里想念什么?
#!/bin/bash
Android_Command=''
MKCOMMAND='~/Library/Android/sdk/tools/android list | grep 'The "android" command is deprecated.''
RESP=$($MKCOMMAND)
echo $RESP
if [ '$RESP'=='The "android" command is deprecated.' ]; then
Android_Command='Version2'
else
Android_Command='Version1'
fi
以下是我得到的輸出
~/Library/Android/sdk/tools/android: No such file or directory
從上一次編輯可以清楚地看到,您不是從終端執行腳本,而是從其中執行一行。
在shell腳本中,單引號內的所有內容都不受shell擴展的約束。 話雖如此, ~
和|
無法引用。
重定向是在執行前由Shell創建的。 這意味着無法執行MKCOMMAND
因為管道|
將被視為android
命令的參數。
那么我們如何處理這種腳本呢? 不要引用任何重定向。
#!/bin/bash
if ~/Library/Android/sdk/tools/android list | grep -q 'The "android" command is deprecated.'; then
Android_Command='Version2'
else
Android_Command='Version1'
fi
if
語句接受一個復雜的語句。 如果找到字符串,則grep -q
將返回零,否則返回非零。
請嘗試直接運行命令(而不使用MKCOMMAND
變量):
RESP=$(~/Library/Android/sdk/tools/android list | grep 'The "android" command is deprecated.')
echo $RESP
...
這種(快速!)黑客可能會繞過您可能遇到的一些Bash 報價問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.