さまざまなソリューションをテストするために何時間も悩んだ後、私はまだ実用的なソリューションを見つけていません。 BashとShell Scriptingは私の最強の領域ではありません。Bashループスルー変数(行と列を使用)
私は行(改行)と列(タブが区切られた)を持つ変数を持っています。私がしたいことは、行をループして 'Column X'を取得し、その項目を変数に入れて、そのCellで何かできるようにすることです。すなわちエコーアウトする。
行数は不明ですが、既知の列数があるため、たとえば列3を常に取得することができます。
私はLinux上でBash v.4を実行しています。
入力例(ここで実際に「タブ」する方法は見つけられません);
UniqueID1 -tab- Description -tab- FriendlyNameABC
UniqueID1 -tab- Description -tab- FriendlyNameXYZ
出力例は、リストをループし、FriendlyNameABC(col 3)を取得し、それをエコーアウトすることです。
ここでこのスクリプトを拡張しようとしています。https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=77277&p=1178478#p1178478 - WPS経由でWiFiに接続するためのシェルスクリプトです。そのページに用意されているスクリプト(参照用)は動作しますが、最も強いWiFi信号だけを選択することに依存していますが、常に接続したいネットワークになるとは限りません。現在、私は行で始まるように、上記のスクリプトを修正するために管理してきた「wpa_cli ..」以下のようになりまし変数で全体の識別WiFiネットワークを置くこれ、読んだが、その後、私は」され
#!/bin/bash
# only run if there's no current wifi connection
if ! ifconfig wlan0 | grep -q "inet addr:" ; then
# grab AP's that support WPS, sort by strength and select the strongest
wpa_cli scan_results | grep WPS | sort -r -k3 | awk 'END{print $NF}' >/tmp/wifi
read ssid < /tmp/wifi
wpa_cli wps-pbc $ssid
fi
これをすべて分割するのに苦労している。
wpa_cli scan_results | grep WPS | sort -r -k3 $allConnections
本質的には、上記のコードをこの疑似コードに変換する必要があります。
#!/bin/bash
# only run if there's no current wifi connection
if ! ifconfig wlan0 | grep -q "inet addr:" ; then
# grab AP's that support WPS, sort by strength and select the strongest
wpa_cli scan_results | grep WPS | sort -r -k3 | awk 'END{print $NF}' >/tmp/wifi
read ssid < /tmp/wifi
#This is the section below that I'm struggling to implement (this is pseudo code, the only bit of working code is the line starting with wpa_cli...)
while(ssid.hasNext(){
#Try connecting to the network
wpa_cli wps-pbc $ssid
if(successful){break();}
}
fi
私は追加する必要があります
、私はデータは、私は、コマンドを実行すると、レイアウトがどのように見えるかに基づいて、タブ区切りと改行であると仮定してきました。
wpa_cli scan_results
Linuxのコマンドラインでコマンドを実行するときに区切り文字を確認する方法はありますか?
for CELL in $(echo $VARIABLE | cut -f3 -d$'\t'); do # for each line in the result of this command...
echo $CELL
# Other stuff with $CELL
done
入力と希望出力の例を追加してください。これはおそらく 'awk'で一番うまくいくでしょう – dawg
ありがとう@dawg私はちょうど情報を更新しました –
Re:" _変数に**行(改行)とcolumns_ "があります:これは珍しいようです - * variable *の代わりに* file *(または* stream *、パイプからの出力のように)と言ってはいけないかどうかを明確にしてください。 – agc