最初の行の文字を比較する


最初に 'india' というキーワードがあった場合に行を表示するというものです。以下のようなものを作成したけれど動作しないという内容です。

#! /bin/sh
read line
flag=awk  /^india/ $line
echo $flag
#end

修正の方法に comp.lang.awk らしさ (質問者の提示したスクリプトの修正を最小限にする) が出ています。

awk -v line="$line" 'BEGIN{ print (line ~ /^india/ ? 1 : 0); exit }'

shell 単独での解法は comp.lang.shell でも有名な (?) Ed の回答です。

read line
case $line in
"india".* ) flag=1 ;;
* ) flag=0 ;;
esac
echo "$flag"

flag=`awk /^india/ $line`

また、csh 系の

flag=$(awk /^india/ $line) # Not available in bourne-sh

という記述方法、そしてパイプを使った方法も示されています。

flag=`echo "$line" | awk '/^india/'`