Shell Script入門2 ~tcsh~

注意

現在,csh/tcshによるシェルスクリプト作成は避けたほうがいいとされています.
理由は「有害なcshプログラミング」に書いてあります.
大学のログインシェルがtcshなので今回はtcshについて書きましたが,これからシェルスクリプトを勉強する方は,bashで勉強することを強くおすすめいたします.
bashシェルスクリプト入門2はこちら


入門1はこちら

このページでは,行の先頭に>とある行は自分が入力したもの,
ないものは出力されたものとして書いています.
自分で試すときには>を取り除いて入力してください.


変数

多くのプログラミング言語と同じようにshellにも変数があります.
$PATH$SHLVLのように$マークから始まるという特徴があります.
上の2つは初めから定義してあることがほとんどですが,自分で変数を作ることもできます.

> @ i = 256 # 数値を代入するときは@を使う
> echo $i
256
> @ i = 3 + 4
> echo $i
7
> set i = "test" # 文字列を代入するときはsetを使う
> echo $i
test

おまけ:シェル変数と環境変数


コマンド引数

C言語と並べて書くとすぐわかると思います.

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("argv[0]: %s\n", argv[0]);
    printf("argv[1]: %s\n", argv[1]);
    printf("argv[2]: %s\n", argv[2]);
    printf("argv[3]: %s\n", argv[3]);
    return 0;
}
> ./a.out coffee tea amazake
argv[0]: ./a.out
argv[1]: coffee
argv[2]: tea
argv[3]: amazake

つぎにシェルスクリプトでこれをやります.

#!/bin/tcsh
echo '$0': "$0"
echo '$1': "$1"
echo '$2': "$2"
echo '$3': "$2"
> ./sc.sh coffee tea amazake
$0: ./sc.sh
$1: coffee
$2: tea
$3: amazake

while文

これもC言語と並べて書いてみます.

#include <stdio.h>

int main(void)
{
    int i = 0;
    while (1) {
        printf("%d\n", i);
        i++;
        if (i > 10) break;
    }
    return 0;
}
> ./a.out
0
1
2
3
4
5
6
7
8
9
10

続いてシェルスクリプト

#!/bin/tcsh

@ i = 0
while (1)
    echo $i
    @ i++
    if ($i > 10) break
end
>./sc.sh
0
1
2
3
4
5
6
7
8
9
10
Tweet