嘗試以下方法:
#!/bin/bash
if sudo profiles -P | egrep -q ': com.meraki.sm.mdm$'; then
exit 0
else
exit 1
fi
- 從
sudo profiles -P
輸出(注意,profiles
總是需要根特權)經由管道(|
)被髮送到egrep
;這兩個命令形成一個管道。
egrep -q ': com.meraki.sm.mdm$'
搜索通過profile
的輸出:
-q
(安靜)選項不產生輸出,簡單地經由它的退出代碼產生一個匹配信號是否找到(0
)否(1
)。
': com.meraki.sm.mdm$'
是一個正則表達式,它與在行末尾($
)處找到的字符串'com.meraki.sm.mdm'相匹配,並以':'開頭。
(
egrep is the same as
grep -E` - 它激活支持擴展正則表達式 - 在這裏不是必須的,但通常建議減少驚喜)。
- 的
if
聲明計算結果爲真,如果管道返回退出代碼0
,並否則爲false(非零)。請注意,默認情況下,它是管道中的最後一個命令,其中的退出代碼確定管道的整體退出代碼。
順便說一句,如果你想要做的一切都是爲了讓您的腳本反映的字符串是否找到或沒有(例如,如果你不需要把你的腳本中採取進一步的行動),以下就足夠了:
sudo profiles -P | egrep -q ': com.meraki.sm.mdm$'
exit $? # Special variable `$?` contains the most recent command's exit code
如果你想在失敗只的事件後立即退出腳本:
sudo profiles -P | egrep -q ': com.meraki.sm.mdm$' || exit
# Alternative, with error message:
sudo profiles -P | egrep -q ': com.meraki.sm.mdm$' ||
{ ec=$?; echo 'Profile not installed.' >&2; exit $ec; }
相反,如果你想後立即退出事件成功的:
sudo profiles -P | egrep -q ': com.meraki.sm.mdm$' && exit
太謝謝你了。這將完美地工作。我將不得不交換退出代碼的目的,我用它的目的,但它是完美的。謝謝!現在要解決捲曲問題>:D – WardsParadox
@WardsParadox:很高興聽到它適合你;我的榮幸。 – mklement0
只是一個快速的,但如果它在安裝程序的情況下使用,它是否仍然需要sudo?由於安裝程序提示(我構建的所有內容)都需要root權限的管理權限,而不需要sudo,請更正? – WardsParadox