• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:bashスクリプト)

スクリプトでバックオートを使ってコマンドを表示する方法

このQ&Aのポイント
  • bashスクリプトでバックオートを使ってコマンドを表示する方法について説明します。
  • 現在の方法では、コマンドを実行させた後に表示させるため、スマートではありません。
  • よりスマートな方法として、コマンドの実行と表示を1行で行う方法があります。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

その前に ここでバッククオート使う意味、ありますか? tarを実行するだけなら ``の中だけ書けばいいです。 また、このコマンドでは何も出力しないので``は空文字列になり、echoも何も出力しません(正確には改行だけ表示する)。 さて、御所望の方法ですが、次のようなものがあります。 1) # 変数に入れる com="tar czf $(date +"%Y_%m_%d").tar.gz *.log" # 表示 echo $com # 実行 $com 2) set -xでトレースを有効にしたサブシェルで実行 (set -x ; tar czf $(date +"%Y_%m_%d").tar.gz *.log) あと > if [ -f *.log ]; then *.logに該当するファイルが複数あるとエラーになります。 なんらかの対策が必要です 例) #!/bin/bash #該当ファイル名をグロービングしてを配列に入れる declare -a f=(*.log) #該当ファイルのチェック #存在してなければ、*.log のままか空文字列になる(オプションによる) if [ "$f" \!= '*.log' -a "$f" \!= '' ] then ( set -x ; ls "${f[@]}") fi

その他の回答 (1)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

関連するQ&A