メモ帳

楽しいアウトプットの場所

ZSH シェルスクリプトの基本(個人的なメモ帳)

zshシェルスクリプトの書き方!
まずは、
任意のディレクトリにtest.shというファイルをvimで作る。

#!usr/bin/zxh
read NAME
echo "hellow, $NAME"

と記述して保存
つぎに、シェルに以下のコマンドを打ち込んでenterする

zsh test.sh

すると、標準入力に打ち込んだ文字列が$NAMEの部分にあてはめられて、出力される。"Hellow, hogehoge"といった具合に

#!usr/bin/zsh
var=1
echo ${var}
echo $var

変数宣言で注意すべき点は、=の前後に空白を開けないことです。
それから、変数の名前の前後に{}をつけると、変数の名前の境界線が明白になって、良いです。
次は関数!!

 #!usr/bin/zsh
 function hoge(){
     read NAME
     echo "hellow, $NAME!"
 }
 hoge 
#!usr/bin/zsh
say() {
    echo "OH!!!, $1 loves  $2, really !?/????,"
}
# 関数の呼び出し
say taro hanako

入力された数値がゼロかどうかを判定するプログラム

#!usr/bin/zsh
judge_zero () {
    read number
    if test $number -eq 0; then
        echo "zero"
    else
        echo "not zero"
    fi
}
# 関数の呼び出し
judge_zero

以下のプログラムも同じ挙動をする

#!usr/bin/zsh
judge_zero () {
    read number
    if test $number -ne 0; then
        echo "not zero"
    else
        echo "zero"
    fi
}
# 関数の呼び出し
judge_zero

次は、カレントディレクトリにdir_1 dir_2 ....dir_5というディレクトリを作るプログラム

#!usr/bin/zsh
for index in {1..5}
do
    mkdir dir_${index}
done


 次は、カレントディレクトリの.txtとつくファイルの名前を、すべてmytext(数字).txtに変換するプログラム、exprを使うと盛大にバグり散らしたので、$(())を使うことにしました。こっちの方が計算速度が速いらしい。こちらの記事を参考にしています。
qiita.com

qiita.com

#!usr/bin/zsh

index=1
for file in *.txt
do
    mv "$file" "mytxt${index}.txt"
    index=$((${index} + 1))
done