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

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

新規登録して質問してみよう
ただいま回答率
85.47%
terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

551閲覧

Rubyのsystemメソッドでsyntax error: invalid arithmetic operator (error token is ".1")

MISOSHIRU

総合スコア31

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2023/03/23 16:14

実現したいこと

以下LinuxコマンドをRubyから実行したい。

awk '{printf("%.1f", int($1*100)/100 - 0.2)}'

前提

Rubyのsystemメソッドを使用し、上記コマンドを実行しなければならない。

発生している問題・エラーメッセージ

syntax error: invalid arithmetic operator (error token is ".1")

該当のソースコード

system("awk '{printf(\"%.1f\", int($1*100)/100 - 0.2)}'")

仮説

以下部分がShellでは違った文字列で解釈されているかもしれません。

\"%.1f\"

補足情報(FW/ツールのバージョンなど)

ruby 2.7.0p0

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

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

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

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

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

melian

2023/03/23 17:04

手元の環境では問題ありませんね。。。 $ ruby -v ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu] $ cat test.rb system("echo '10 20 30' | awk '{printf(\"%.1f\", int($1*100)/100 - 0.2)}'") $ ruby test.rb 9.8
winterboum

2023/03/23 22:57

「該当のソースコード」をどの様に実行してますか? melianさんのコメントの様に記述してください。
MISOSHIRU

2023/03/24 01:17

質問ありがとうございます。申し訳ありません、上記質問にコードが不足していました。正しくは以下になります。 $ ruby -v ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin20] $ cat test.rb system("LENGTH=$(echo '10 20 30' | awk '{printf(\"%.1f\", int($1*100)/100 - 0.2)}') ; echo $((LENGTH))") $ ruby test.rb sh: 9.8: syntax error: invalid arithmetic operator (error token is ".8")
MISOSHIRU

2023/03/24 01:25 編集

以下で解決したかもしれません。 問題ないか確認します。 $ cat test.rb system("LENGTH=$(echo '10 20 30' | awk '{printf(\"%.1f\", int($1*100)/100 - 0.2)}') ; echo $LENGTH") $ ruby test.rb 9.8
MISOSHIRU

2023/03/24 01:36

解決しました。問題は$((LENGTH))でした。 とても助かりました。 実行くださったコードのみの確認を怠っていたため、原因を突き止められませんでした。 わざわざ環境を揃えてまで実行結果を共有くださりありがとうございます!
otn

2023/03/24 03:11

何故、「実際に実行してエラーが発生したコード」と異なる「実行してもエラーが発生しないコード」を掲載して質問したのでしょうか?
guest

回答1

0

自己解決

Before

$((LENGTH))

After

$LENGTH

投稿2023/03/24 01:37

MISOSHIRU

総合スコア31

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問