• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Linux の shell プログラミングについて)

Linuxのshellプログラミングの実行方法

このQ&Aのポイント
  • Linuxのshellスクリプトの実行方法について質問です。現在はechoコマンドを使用して実行するコマンドを表示していますが、他に良い方法があるか知りたいです。
  • 具体的な例で説明します。現在はechoコマンドを使用してlsコマンドを実行していますが、同じ内容を2行書きたくないため他の方法を探しています。
  • 調べてみた結果、set -xコマンドとset +xコマンドを使用する方法が見つかりましたが、思ったような結果にならず困っています。他に良い方法があるか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

eval したら良いと思います。コマンドを書くのを1回にするには関数を書きましょう。 #!/bin/sh echo_and_eval() { echo "$1"; eval "$1"; } var1=/etc echo_and_eval "ls ${var1} | wc -l"

noname#207939
質問者

お礼

ありがとうございます! やりたかった事がこれでできます。 勉強になりました。

その他の回答 (2)

noname#208507
noname#208507
回答No.2

質問の最初のスクリプトの #!/bin/bash のところを #!/bin/bash -x にしてみてはどうでしょう。

noname#207939
質問者

補足

ご回答ありがとうございます。 #!/bin/bash -x var1=/etc set -x ls -l $var1 | wc -l set +x としました結果は + var1=/etc + set -x + ls -l /etc + wc -l 205 + set +x で不要な情報がたくさん出ます。 あくまで欲しいのは ls -l $var1 | wc -l 205 のみです。 例としてデバッグのモードを書いてしまったのが間違いでした。 望んでおりますのはデバッグとしての出力ではなく、Shellプログラムの中のごく一部の行で、命令と結果を両方表示させるのに、うまい方法があれば知りたいのです。 質問の仕方が悪くて申し訳ありません。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

変数展開前の物を表示したいのなら、set -v です。

noname#207939
質問者

補足

ご回答ありがとうございます。 #!/bin/bash var1=/etc set -v ls -l $var1 | wc -l set +v としてみたところ結果は以下の通りでした。 ls -l $var1 | wc -l 205 set +v 次のように表示される方法を探しております。 ls -l /etc | wc -l 205 (質問の仕方が悪くて申し訳ありません)

関連するQ&A