- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:linux シェルの変数、引数の指定について教えて)
Linuxシェルでの変数や引数の指定について教えてください
このQ&Aのポイント
- Linuxシェルでファイルの複合化や解凍を行うシェルスクリプトを作成しています。ファイルの指定には変数や引数を使用したいのですが、具体的にどのように設定すればよいかわかりません。
- また、ファイルが複合化された後のパスや移動後のパスを変数で設定する方法についても教えてください。
- ご存知の方、教えていただければ幸いです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「fukugo-decrypt」の出力ファイル名が「入力ファイル名から『.e』を取る」と決まっているなら、単純に取ればいいんですよ。 ---------- ENCRYPT_PATH="/home/aaa/bbb/test.tar.gz.e" TMP_PATH="/tmp" #「.e」を取る DECRYPT_PATH=${ENCRYPT_PATH%.e} echo "${DECRYPT_PATH}" #ファイル名だけ残す DECRYPT_FILE=${DECRYPT_PATH##*/} echo "${TMP_PATH}/${DECRYPT_FILE}" ---------- この変数のうしろにくっついてる「%」や「#」はシェルに組み込まれている機能ですが、文字列操作には外部コマンドのsedやawkもよく使われるので、そちらの学習もしておくとよいです。 #あと「復号」ね。「化」は不要。
お礼
ご回答ありがとうございます! 以下の形でつくり無事動きました! ーーーーーーーーーーーーーーーーーーー #!/bin/sh # # init CWD=$(cd $(dirname $0) && pwd) #cd ${CWD} # # init vars TAR_PATH="$1" TMP_PATH="/tmp" if [ -z $1 ] then echo "引数を指定してください" exit fi echo "Start" echo "指定されたtarファイルを複合します" fukugo-decrypt ${TAR_PATH} #「.e」を取る DECRYPT_PATH=${TAR_PATH%.e} echo "${DECRYPT_PATH}" echo "出来たファイルを/tmp/にしまいます" mv ${DECRYPT_PATH} ${TMP_PATH} #ファイル名だけ残す DECRYPT_FILE=${DECRYPT_PATH##*/} echo "${TMP_PATH}/${DECRYPT_FILE}" echo "ファイルを展開します" tar zxvf ${TMP_PATH}/${DECRYPT_FILE} -C ${TMP_PATH} echo "End" ーーーーーーーーーーーーーーーーーーーーーーーー 今度はこれで展開されたログを整形して纏めて集計するシェルを作るのに挑戦しようと思います! あと複合について、化いらないのですね。 知らなかったので社内で何度も言ってしまいました。恥ずかしい。 今後は言わないよう気をつけようと思います。 重ね重ね、本当にありがとうございました!