#!/bin/bash
if read -ra banner < <(LANG=C sshd -T | grep banner 2>/dev/null)
then
printf "$banner"
else
printf 'banner not set\n'
fi
如何修復我的 bash 腳本以讀取我的 ssh 警告橫幅。bash 腳本的新手,不確定我做錯了什么
uj5u.com熱心網友回復:
為了得到一個好的答案,最好描述一下你看到的輸出或行為,以及你期望的輸出。
我發現您的代碼段有兩點錯誤:
sshd -T未設定橫幅時列印banner none,因此您的 grep 仍將回傳一行,使 if 毫無意義- 您請求橫幅是一個陣列
read -a,但在列印時只訪問第一個元素
你可以像這樣修復你的代碼
if read -ra banner < <(LANG=C sshd -T | grep banner | grep -v "^banner none$"); then
printf "${banner[@]:1}"
else
printf 'banner not set\n'
fi
我更喜歡不同的風格,也許像
shopt -s lastpipe
LANG=C sshd -T | grep ^banner\ | read -r banner
if test "$banner" != "banner none"; then
echo "${banner#* }"
else
echo "banner not set"
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/419513.html
標籤:
