- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:bashスクリプト)
スクリプトでバックオートを使ってコマンドを表示する方法
このQ&Aのポイント
- bashスクリプトでバックオートを使ってコマンドを表示する方法について説明します。
- 現在の方法では、コマンドを実行させた後に表示させるため、スマートではありません。
- よりスマートな方法として、コマンドの実行と表示を1行で行う方法があります。
- みんなの回答 (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