はじめまして、シェルスクリプトを勉強中の者です。
コマンドを変数にいれて、まとめました。
しかしコマンドの変数を呼びこもうとするとエラーになります。
============================================
#!/bin/sh
GREP="grep"
cat "${GREP} '^[0-9]' /home/hoge/test.nicdf"
============================================
================ シェル実行結果 =============
$ ./test.sh
cat: grep '^[0-9]' /home/hoge/test.nicdf: そのようなファイルやディレクトリはありません
どう書けば、エラーにならずに正常に動作するでしょうか?
ご教授の程よろしくお願いします。
No.1
- 回答日時:
20年くらい前までシェル使いだったものです。
何をしたいんですか?
${GREP} '^[0-9]' /home/hoge/test.nicdfをコマンド行として認識させたいの?
だったらバッククォーテーション``で括るんですよ、確か。
`${GREP} '^[0-9]' /home/hoge/test.nicdf`
この回答への補足
アドバイスありがとうございます。
>${GREP} '^[0-9]' /home/hoge/test.nicdfをコマンド行として認識させたいの?
はい、コマンド行として認識させたいと考えております。
>だったらバッククォーテーション``で括るんですよ、確か。
>`${GREP} '^[0-9]' /home/hoge/test.nicdf`
最初バッククォーテーションで試してみたのですがエラーになります。
エラーは下記の通りです。
-bash: command not found
よろしくお願いします。
No.2
- 回答日時:
「cat "${GREP} '^[0-9]' /home/hoge/test.nicdf"」
と書けば実行できると思ったんだよね? だとしたら当然「こう書けば実行できるはず」と思った理由があるはず. なぜ「こう書けば実行できる」と思ったのか, その思考過程を明らかにできますか?
きつい言い方になるけど, 思いつきで書いてみて「できないから質問する」だけでは全く勉強になりませんよ. それとも「勉強中といい続けるだけの永遠の初心者」でいるつもりですか (いや, その方が楽なんだけどねぇ)?
「バッククォートでくくる」必要すらありません>#1. というか, くくったらエラーになるような気がする.
No.3
- 回答日時:
> どう書けば、エラーにならずに正常に動作するでしょうか?
それはどういう動作が「正常」なのかという仕様によります。
単純に「/home/hoge/test.nicdf」というファイルの中を検索したいのなら
grep '^[0-9]' /home/hoge/test.nicdf
でいいでしょう。
「何をやりたいのか」を説明せずに、「エラーになりました。直してください」では手の出しようがありません。
ご指摘ありがとうございます。
やりたいことはコマンドを変数に入れて、
OS移植したりしてもコマンドの変数中身を変えれば動作するシェルを作ることが目的です。
grep '^[0-9]' /home/hoge/test.nicdf
単純に上記のような記載ではなくてですね、
GREP="grep"
cat "${GREP} '^[0-9]' /home/hoge/test.nicdf"
上記のようにコマンドを変数に入れて実行する方法を模索しております。
No.5ベストアンサー
- 回答日時:
デバグ中なら、
#!/bin/sh
を
#!/bin/sh -x
にして実行してみるとよい。どんなコマンドが実行されるかがわかる。
たぶん、こんな感じに表示されるはず
+ cat 'grep '\''^[0-9]'\'' /home/hoge/test.nicdf'
最初の+はただの目印なのです。
あなたは、grep を使うときにこのような入力をしますか?ってことです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- Mac OS PATHを使ってcdなどで簡単に移動できるようになりたい 3 2023/05/13 14:22
- UNIX・Linux bashでブランク(空白)を検索文字列として指定する方法 1 2022/04/13 22:29
- Windows 10 ネットワークプリンターにファイルを直接送る方法・コマンドないですか?(´・ω・`) 3 2023/03/13 23:15
- その他(プログラミング・Web制作) bashのgrepで複数の検索、かつスクリプト内で改行する方法を教えてください。 1 2022/10/06 20:09
- Windows 10 renameコマンドでファイル名からアンダースコアを消す方法 5 2023/04/24 13:33
- UNIX・Linux AWSのEC2のZabbixユーザーでawscliコマンドが実行できない状態を解決する 1 2022/12/06 22:17
- UNIX・Linux Debianでシェルスクリプトにおいて正規表現の条件文で[[,]]が使えないので困ってます 2 2023/01/20 09:27
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ubuntu(linux)のシャットダウン...
-
ubuntuのシャットダウンが進ま...
-
raspberry piを使ったWebサーバ...
-
Windowsのローカルディレクトリ...
-
ubuntuで デイスク/deb/loopと...
-
VirtualBox ゲストOSにPC内蔵HD...
-
LinuxのOSのインストールについて
-
Ubuntu on Xorgのログインについて
-
Ubuntuサーバーでメールを受信...
-
Kali Linuxで起動できない - Mi...
-
LinuxMintが突然フリーズする
-
ssl_error_logのエラー内容(AH...
-
ssl_request_logの必要性について
-
古いiMacにLinuxをインストール...
-
Let’s Encrypt の自動更新をcro...
-
windows10を使っています。 wsl...
-
AWSでSSH接続をしたいのですが...
-
Linux のシェルスクリプトの強...
-
[Linux Mint] インストールした...
-
ubuntuのサーバー(virtual box)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンド終了ステータス
-
FTPコマンドの戻り値について
-
cshで変数名の入れ子ができない
-
lsコマンドの色設定が反映されない
-
diskpart でパーティションの一...
-
実行中のシェルスクリプト自体...
-
Mac OSXのターミナルでemacsを起動
-
cronでftp自動転送を行いたい
-
telnet へのパイプができないです
-
cshの標準出力を制御したい
-
複数の処理を順番にログアウト...
-
vagrant upでエラーが表示され...
-
UNIX Cシェルで実数の比較
-
kshでのcase文条件範囲について
-
空白を含んだシェル変数の代入
-
shellから起動したkterm上でコ...
-
PHP4の Warning: pg_freeresul...
-
メニュー画面よりコマンド実行...
-
リモートシェルでファイルをroo...
-
cygwinシェルスクリプト内での...
おすすめ情報