sourceはファイルに記載されているコマンドを実行するコマンドだ。
このページではファイルに記載されているコマンドを実行する方法を解説する。
目次
sourceコマンドの基本
コマンドの基本動作
まずは、コマンドリストが記載されたファイルcomlist1.txtを用意する。
1 |
echo abc |
使い方は、次のとおりだ。では実際にsourceコマンドを使ってみよう。
$ source ファイル名
コマンドリストが記載されたファイルcomlist1.txtの内容を実行する場合は、次のコマンドだ。
$ source comlist1.txt
コマンドリストが記載されたファイルcomlist1.txtの内容を実行し、abcを表示した。
sourceコマンドにおけるファイルの実行権
sourceコマンドで指定するコマンドリストが記載されたファイルは実行権限が指定されていなくても構わない。
上で指定したファイル「comlist1.txt」をlsコマンドのlオプションで実行権限を確認する。
$ ls -l comlist1.txt
実行権限は設定されていない。
sourceコマンドの引数
sourceコマンドには引数を設定することができる。
はじめに次の通りのテキストファイルcomlist2.txtを用意する。
1 2 |
vala=$1 echo "input=$vala" |
1行目に$1と記載したが、これが引数だ。
引数の2つめのものは$2、3つめの$3と繋がる。
引数を指定したsourceコマンドの使い方は、次のとおりだ。
$ source ファイル名 引数1 引数2 引数3…
引数に「Extra」と指定し、テキストファイルcomlist2.txtを実行するには次のコマンドだ。
$ source comlist2.txt Extra
$1の引数「Extra」が取り込まれ、「input=Extra」と表示された。
sourceコマンドでの変数の保持
sourceコマンドでは、実行したファイル内で扱われた変数の値が保持される。
上で指定したファイル「comlist2.txt」内の変数「vala」の値をechoコマンドで確認してみる。
$ echo $vala
変数「vala」の値は「Extra」と保持されている。
制御コマンドとの組み合わせ
sourceコマンドは何度も同じ動きをするときに、そのコマンドの流れをコマンドリストファイルに記載しておいて実行することで効率的な作業ができる。
例えば、ifコマンドと組み合わせれば、番号を引数で入力すれば品名と価格を表示するといったことが可能だ。
まず、ifコマンドを組み合わせたコマンドリストテキストのファイルcomlist3.txtを作成する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
indexa=$1 if (($indexa==1)) then namea="Wind" price=120 elif (($indexa==2)) then namea="Sun" price=250 else namea="Snow" price=150 fi echo -e "No.$indexa\n$namea\n\$$price" |
$ source comlist3.txt 2商品番号2の商品情報をsourceコマンドで表示する。
商品番号2の商品名と価格が表示された。
ifコマンドでは分岐を行うが、その他にもループ制御を行うforコマンドやwhileコマンドを組み合わせることで多彩な制御ができる。
source関連コマンド
最後にsourceコマンドに関連して、基本的なファイルからコマンドを実行のコマンドも紹介しておく
bashコマンド
コマンドリストが記載されたファイル#Pの内容を実行するが実行時の変数は保持しない。
ifコマンド
条件によって制御を分岐する。
forコマンド
制御を指定した回数繰り返す。
whileコマンド
条件が成立していれば繰り返す。
usermodコマンド
ユーザー情報を変更する。
まとめ
Linuxに限らずコンピュータでの操作は繰り返し操作が多い。
コマンドを一度に操作できるようにテキストファイルにまとめておいて、短いコマンドで何度も実行できるのが利用するメリットだ。
効率化のためにもぜひ活用しよう。
コメント