質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Q&A

2回答

16866閲覧

シェルスクリプト エラー 整数の式が予期されます

amezeal

総合スコア7

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

0グッド

0クリップ

投稿2020/07/17 15:03

シェルスクリプトでエラーが発生します。解決策をご教授ください。

declare -a j j=($(awk '{print $2}' $1)) if [ ${j[1]} -lt ${j[0]} ];then #-lt = less than echo ERROR exit 1 fi

$1の部分で参照するファイルは以下のものです。

tsv

10 4000 2 30 3000

これを実行すると
「: 整数の式が予期されます」と出力されます。
調べたところによると、if文の条件のところの比較対象に問題がありそうなのですが、どのように変更したらよいか分かりませんでした。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

手元の環境で試しましたが、質問文のような現象にはなりませんでした。
「ERROR」と表示されて「exit 1」で終了しました。
下でもやっていますがbashに「-x」オプションを入れてみるとエラーが出ている箇所は特定できるかもしれません。

terminal

1$ cat /etc/lsb-release 2DISTRIB_ID=LinuxMint 3DISTRIB_RELEASE=19.3 4DISTRIB_CODENAME=tricia 5DISTRIB_DESCRIPTION="Linux Mint 19.3 Tricia" 6 7$ ls -lA 8合計 8 9-rwxr-xr-x 1 hidezzz hidezzz 122 7月 18 00:35 hoge.bash 10-rw-rw-r-- 1 hidezzz hidezzz 15 7月 18 00:30 hoge.tsv 11 12$ cat hoge.bash 13declare -a j 14j=($(awk '{print $2}' $1)) 15 16if [ ${j[1]} -lt ${j[0]} ];then #-lt = less than 17 echo ERROR 18 exit 1 19fi 20 21$ cat hoge.tsv 220 4000 23 240 3000 25 26$ bash hoge.bash hoge.tsv 27ERROR 28 29$ bash -x hoge.bash hoge.tsv 30+ declare -a j 31+ j=($(awk '{print $2}' $1)) 32++ awk '{print $2}' hoge.tsv 33+ '[' 3000 -lt 4000 ']' 34+ echo ERROR 35ERROR 36+ exit 1

投稿2020/07/17 15:45

hidezzz

総合スコア1248

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

if [ ${j[1]} -lt ${j[0]} ]

ですが、-ltの左右は、数字だけからなる必要があります。
数字で無い文字が入っているのでしょう。

読み込むファイルの中身を確認しましょう。

sh

1awk '{print $2}' ファイル | grep -n '[^0-9]'

で、2項目目に数字外の文字があるのが何行目か分かります。

あと、今回のエラーとは関係ないと思いますが、if [ "${j[1]}" -lt "${j[0]}" ] と、引用符で囲んでおいた方が良いですね。

投稿2020/07/17 17:05

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問