IPアドレスを確認するためにここでbashスクリプトを見つけました。 http://www.linuxjournal.com/content/validating-ip-address-bash-script
実行しようとするとエラーが発生します。
test.sh: line 22: syntax error: unexpected "(" (expecting "fi")
22行目は次のとおりです。
ip=($ip)
質問
- この行はリストまたは配列を作成する必要がありますか?
私は2つの異なるシェルを試しましたが、どちらも機能しません。試験を終えた:
#!/bin/bash
そして
#!/bin/sh
どんな提案でも大変感謝します。
ベストアンサー1
それ:
test.sh: line 22: syntax error: unexpected "(" (expecting "fi")
bash
報告されたエラーメッセージではありません。 Almquistシェルとその派生物(例:dash
busybox)は、sh
次のことを報告します。
$ grep -z '(expecting' /bin/dash
%s unexpected (expecting %s)
ash
シェルが配列をサポートしていないという事実に基づいて、このスクリプトはshe-bangに示されているようにbash
動作します(3.2以降)。 4次IPv4アドレスをチェックするように、構文を混ぜた#!/bin/bash
ように見えますが。 、そのうちのいくつかは小数点の3桁に制限されています(たとえば、いくつかのエラーが発生します)。bash
zsh
ksh93
bash
008.008.008.008
とその両方で認識される標準のPOSIX構文を使用すると、sh
次のことができます。dash
bash
valid_ip() (
IFS=.
set -o noglob
set -- $1''
[ "$#" -eq 4 ] || exit
for i do
case $i in
("" | *[!0-9]*) exit 1;;
esac
[ "$i" -le 255 ] || exit
done
)