
パイプを含む文字列が入った変数をシェルコマンドとして実行する方法がありましたら
教えてください。
Linux環境で、bashを使って定期的にモニタリングするスクリプトを書こうとしています。
スクリプトの引数で実行するモニタリングコマンドを変えれるようにしたいのですが、
パイプが入っているとうまくいきません。
下記のようなスクリプトで、引数に "ps -ef | grep pty" と入れたら、定期的に
そのようなコマンドを実行できるようにできますでしょうか?
(引数指定時に、きちんとクォーテーションで全体を囲んで、パイプが評価されない
ようにしてもダメでした。)
変数として入ったコマンドを実行するときに、パイプがシングルクォーテーションで
囲まれて "ps -ef '|' grep pty" のようになってしまい、パイプとして実行時に認識
されないようです。
bashシェルで設けてる制約でしょうか?回避策などありますでしょうか?
<<スクリプト poll.sh>>
##
# Defs
export RUNCMD='finger'
export INTERVAL=10
##
# Getopt
while getopts "t:" OPT; do
case ${OPT} in
t) INTERVAL=${OPTARG};;
esac
done
shift $((OPTIND-1))
[ ${#} -gt 0 ] && RUNCMD="${*}"
##
# Main part
while :; do (set -x; ${RUNCMD}; sleep ${INTERVAL}); done
No.2ベストアンサー
- 回答日時:
while :; do (set -x; eval "${RUNCMD}"; sleep ${INTERVAL}); done
evalは引数の内容をコマンドとみなして実行する組み込みコマンドです。
evalが実行された時点でダブルクォーテーションで括られたシェル変数が展開されるため、
RUNCMD='ps -ef | grep pty'なら、実際に実行されるコマンドは
ps -ef | grep pty
となり、期待通りの動作をするのではないでしょうか?
$ set -x
$ RUNCMD='ps -ef | grep pty'
+ RUNCMD='ps -ef | grep pty'
$ eval "$RUNCMD"
+ eval 'ps -ef | grep pty'
++ grep pty
++ ps -ef
test 32706 32559 0 10:12 pts/2 00:00:00 grep pty
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sudoで実行したコマンドの実行...
-
Linux のシェルスクリプトの強...
-
pingは正常なのにtracerouteで...
-
サーバでログオフするとアプリ...
-
SONYの音楽ソフト「x-アプリ」...
-
エクセルの表にヘンな枠が・・・
-
バッチファイル内の各コマンド...
-
シャットダウンバッチがうまく...
-
Openイベントを開始させないで...
-
最初の一度しか実行されないロ...
-
taskkill をバッチ処理できない。
-
solaris10のrloginやtelnetによ...
-
別のユーザーとして実行が表示...
-
PowerShellのスクリプト実行に...
-
bashで変数にパイプを入れ、コ...
-
やっぱ駄目だわ!さっきソープ...
-
コマンドプロンプト Windows
-
大手町駅。それはホームから非...
-
CLASSPATHの確認方法について
-
既存フォレストの既存ドメイン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SONYの音楽ソフト「x-アプリ」...
-
エクセルの表にヘンな枠が・・・
-
pingは正常なのにtracerouteで...
-
Linux のシェルスクリプトの強...
-
SPI非言語の問題 解説お願いします
-
sudoで実行したコマンドの実行...
-
Openイベントを開始させないで...
-
windows10のごみ箱をrd /s /q C...
-
シャットダウンバッチがうまく...
-
emacsでCtrl+zを押してサスペン...
-
最初の一度しか実行されないロ...
-
PowerShellのスクリプト実行に...
-
python IDLEで訂正、削除のやり...
-
ACCESSレポートをPDFに出力したい
-
バッチファイル内の各コマンド...
-
時間のマクロで最初はその時間...
-
LD_LIBRARY_PATHって?
-
コマンドプロンプトとcmdの違い
-
文化祭の書類で不備がありました
-
ROBOCOPY cmdで正常に処理され...
おすすめ情報