- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Linux の shell プログラミングについて)
Linuxのshellプログラミングの実行方法
このQ&Aのポイント
- Linuxのshellスクリプトの実行方法について質問です。現在はechoコマンドを使用して実行するコマンドを表示していますが、他に良い方法があるか知りたいです。
- 具体的な例で説明します。現在はechoコマンドを使用してlsコマンドを実行していますが、同じ内容を2行書きたくないため他の方法を探しています。
- 調べてみた結果、set -xコマンドとset +xコマンドを使用する方法が見つかりましたが、思ったような結果にならず困っています。他に良い方法があるか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
eval したら良いと思います。コマンドを書くのを1回にするには関数を書きましょう。 #!/bin/sh echo_and_eval() { echo "$1"; eval "$1"; } var1=/etc echo_and_eval "ls ${var1} | wc -l"
その他の回答 (2)
noname#208507
回答No.2
質問の最初のスクリプトの #!/bin/bash のところを #!/bin/bash -x にしてみてはどうでしょう。
質問者
補足
ご回答ありがとうございます。 #!/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 です。
質問者
補足
ご回答ありがとうございます。 #!/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 (質問の仕方が悪くて申し訳ありません)
お礼
ありがとうございます! やりたかった事がこれでできます。 勉強になりました。