LoginSignup
0
0

ShellScript、忘れがちなことをメモ

Last updated at Posted at 2023-10-05

こんにちは〜
最近UnixやShellScriptについて学び始めました.まだまだ初歩段階で、できることは限られておりますが、とても楽しいです!

ローカルのフォルダやファイルに直接関与できるので、普段のJavaやpythonのコーディングの時とは違った面白さを実感しています.

以前、コマンド使いの教授が、GUIよりCUIの方が早くて良いと言っていたのですが、最近その良さをひしひしと実感しております.

今回の記事の主旨ですが、ShellScriptでコーディングする上で、つい忘れがちなことを備忘録として、残していきたいと思います.

引数で指定したフォルダ内のファイルを1行ずつ取得

dir=$1
for f in $dir
do
    while read line
    do
        処理内容
    done < f
done

よく使います.
フォルダ内の全ファイルを一括で調べたい時にとても便利です.

if文, 条件式

if [ 条件式 ]; then
    処理内容1
elif [ 条件式 ]; then
    処理内容2
else
    処理内容3
fin

ifの構文は問題ないのですが、[]内の条件式の両端に半角スペースを入れ忘れがちです.気をつけたいです.

変数宣言

変数=値

「変数 = 値」と書かないようにする!
本当に些細なことなのですが、他の言語でコーディングをする際は、見やすさを考慮してスペースを入れていています.その癖がshellでも発動してしまうことが多々あります.
スペースをつけてしまうと、変数をコマンドとして誤認識してしまうので注意が必要です
.

shell内でオプション指定付きechoコマンド

/bin/echo -n $変

シェル内だと、/bin/をつけないとうまくオプションを認識してくれませんでした.
ちなみに「-n」は改行なしというオプションです.

指定した行を取得, 表示

line=`wc -l ファイル名 | awk '{print $行数}`
head -n $line ファイル名 | tail -n 1

数字の最大最小を取り出すことが多いので、基本的にはsortしてから、最初の行と最後の行を取得することが多いです.

ちなみにsortは

sort -n -r -o sortしたいファイル名 sort後を記録するファイル名

「-n」numberは数字順に並び替え
「-r」reverseはたしか降順?に並び替え
「-o」outputは出力先を指定して並び替え
となっています.

思ったこと

shellを使えば、ローカルファイルを手軽に扱うことができるので楽しいです.
javaでファイルを読み込むとしたら、FileライブラリやBufferdReaderライブラリなどを使わないといけないので、ちょっと手間な気がします.
言語って勿論好みにもよりますが、使う場面に合うように、適材適所を考えることが大事ですね.

いろんな言語やライブラリを使いこなせるようになって、どんな問題にも即座に対応できるようになりたいです.地道に勉強していこうと思います!

0
0
2

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