0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

$@に「”dir1/ dir2/”」 としたら$1に2つともディレクトリとしてちゃんと格納された

Last updated at Posted at 2021-03-12

初めましてshoです。

”tarアーカイブしたものを別のサーバにコピーする”
というシェルスクリプト作成の際に初心者過ぎてこんなこと考えました。

$@に複数のディレクトリもアーカイブファイル名も接続先のホスト名もIPもパスも全部入れたい。でもディレクトリが決まった個数ではない場合どうすればいいんだ・・・
※後日こんなに難しくしなくていいって言われました

調べてもそれっぽい記事が見つからなかったので試しに
”dir1 dir2” と書いてみました。
結果、「$1に二つともちゃんとディレクトリとして入ってる!」

もしかしたら普通に使われていること?
それともそもそもそんな使い方しない?

そこらへんはわかりませんがめっちゃ感動しました。

それでは以下私がテストした内容です。

(※学習記録やメモ書き目的で始めました。ほぼ初学者レベルなので理解が浅いところや誤りがあるかと思いますがよろしくお願いします。またアドバイス等コメントいただけるとすっごく嬉しいです。早く先輩方のお力になれるよう精進します。)

#テストした内容

  • スクリプト実行時 「スクリプト名 ”dir1/ dir2/ dir3/” file1 file2」として$1〜$3に格納しtarアーカイブする
  • echo で$1〜3を出力
  • アーカイブされたものがちゃんと元のディレクトリか展開する

##シェルスクリプト


      1 #!/bin/sh
      2 
      3 echo '$1=' $1
      4 echo '$2=' $2
      5 echo '$3=' $3
      6 
      7 
      8 tar_name="$(date +%Y%m%d).tar"
      9 
     10 tar -cvf ${tar_name} $1
     11 
           

##テスト
テストで使うディレクトリ、ファイル一覧


# ls -FR
.:
dir1/  dir2/  dir3/  file1  file2  file3

./dir1:
file1  file2

./dir2:
file2  file3

./dir3:
file3

シェルスクリプト実行と実行結果

  • スクリプト実行時 「スクリプト名 ”dir1 dir2 dir3” file1 file2」として$1〜$3に格納しtarアーカイブする
  • echo で$1〜3を出力

# test-tar "dir1/ dir2/ dir3/" file1 file2
$1= dir1/ dir2/ dir3/
$2= file1
$3= file2
dir1/
dir1/file1
dir1/file2
dir2/
dir2/file2
dir2/file3
dir3/
dir3/file3

# ls
20210312.tar  dir1  dir2  dir3  file1  file2  file3 

実行結果の確認

  • アーカイブされたものがちゃんと元のディレクトリか展開する

# rm -rf dir1  dir2  dir3  file1  file2  file3
# ls
20210312.tar
# tar xvf 20210312.tar
dir1/
dir1/file1
dir1/file2
dir2/
dir2/file2
dir2/file3
dir3/
dir3/file3
# ls
20210312.tar  dir1  dir2  dir3
# ls -RF
.:
20210312.tar  dir1/  dir2/  dir3/

./dir1:
file1  file2

./dir2:
file2  file3

./dir3:
file3 


改めて、こんな使われかたしているのか疑問、不安ですが、ちょっといい発見した気分です。

以上!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?