13,007
回編集
細 (文字列「source lang」を「syntaxhighlight lang」に置換) |
|||
7行目: | 7行目: | ||
if文の演算子で、-eを使用することでファイルが存在することを確認することができる。<br> | if文の演算子で、-eを使用することでファイルが存在することを確認することができる。<br> | ||
以下のシェルスクリプトでは、test.txtファイルが存在するか確認して、ファイルが存在する場合、File exists.と表示する。<br> | 以下のシェルスクリプトでは、test.txtファイルが存在するか確認して、ファイルが存在する場合、File exists.と表示する。<br> | ||
< | <syntaxhighlight lang="sh"> | ||
#!/bin/bash | #!/bin/bash | ||
21行目: | 21行目: | ||
つまり、! -eと記述することで、ファイルが存在しない場合に真となる。<br> | つまり、! -eと記述することで、ファイルが存在しない場合に真となる。<br> | ||
以下のシェルスクリプトでは、test.txtファイルが存在しない場合に、File not exists.と表示する。<br> | 以下のシェルスクリプトでは、test.txtファイルが存在しない場合に、File not exists.と表示する。<br> | ||
< | <syntaxhighlight lang="sh"> | ||
#!/bin/bash | #!/bin/bash | ||
37行目: | 37行目: | ||
if文の演算子で、-dを使用することでディレクトリが存在することを確認することができる。<br> | if文の演算子で、-dを使用することでディレクトリが存在することを確認することができる。<br> | ||
以下のシェルスクリプトでは、testディレクトリが存在する場合、Directory exists.と表示する。<br> | 以下のシェルスクリプトでは、testディレクトリが存在する場合、Directory exists.と表示する。<br> | ||
< | <syntaxhighlight lang="sh"> | ||
#!/bin/bash | #!/bin/bash | ||
51行目: | 51行目: | ||
つまり、! -dと記述することで、ディレクトリが存在しない場合に真となる。<br> | つまり、! -dと記述することで、ディレクトリが存在しない場合に真となる。<br> | ||
以下のシェルスクリプトでは、testディレクトリが存在しない場合に、Directory not exists.と表示する。<br> | 以下のシェルスクリプトでは、testディレクトリが存在しない場合に、Directory not exists.と表示する。<br> | ||
< | <syntaxhighlight lang="sh"> | ||
#!/bin/bash | #!/bin/bash | ||
131行目: | 131行目: | ||
ワイルドカード(*)を使用して、カレントディレクトリ内のファイルを順に処理することができる。 | ワイルドカード(*)を使用して、カレントディレクトリ内のファイルを順に処理することができる。 | ||
以下の例では、全てのファイルを繰り返し処理している。 | 以下の例では、全てのファイルを繰り返し処理している。 | ||
< | <syntaxhighlight lang="sh"> | ||
for FILENAME in *; do | for FILENAME in *; do | ||
echo "$FILENAME" | echo "$FILENAME" | ||
139行目: | 139行目: | ||
特定の拡張子を持つファイルのみを列挙する場合は、以下のように記述する。 | 特定の拡張子を持つファイルのみを列挙する場合は、以下のように記述する。 | ||
以下の例では、全てのPNGファイルを繰り返し処理している。 | 以下の例では、全てのPNGファイルを繰り返し処理している。 | ||
< | <syntaxhighlight lang="sh"> | ||
for PNGFILE in *.png; do | for PNGFILE in *.png; do | ||
echo "$PNGFILE" | echo "$PNGFILE" | ||
146行目: | 146行目: | ||
<br> | <br> | ||
また、次のように1行で記述することもできる。 | また、次のように1行で記述することもできる。 | ||
< | <syntaxhighlight lang="sh"> | ||
for PNGFILE in *.png; do echo "$PNGFILE"; done | for PNGFILE in *.png; do echo "$PNGFILE"; done | ||
</source> | </source> | ||
153行目: | 153行目: | ||
以下の例では、findコマンドで検索したファイルを、while文で順に処理している。 | 以下の例では、findコマンドで検索したファイルを、while文で順に処理している。 | ||
深い階層にあるファイルも再帰的に処理される。 | 深い階層にあるファイルも再帰的に処理される。 | ||
< | <syntaxhighlight lang="sh"> | ||
find . -type f | while read FILENAME; do | find . -type f | while read FILENAME; do | ||
echo "$FILENAME" | echo "$FILENAME" | ||
171行目: | 171行目: | ||
==== テキストファイルを1行のみ読み込む ==== | ==== テキストファイルを1行のみ読み込む ==== | ||
readコマンドは、ユーザからの入力の他に、ファイルからの入力を1行のみ読み込むことができる。<br> | readコマンドは、ユーザからの入力の他に、ファイルからの入力を1行のみ読み込むことができる。<br> | ||
< | <syntaxhighlight lang="sh"> | ||
# 実行 | # 実行 | ||
read line < list.txt | read line < list.txt | ||
183行目: | 183行目: | ||
ファイルを標準入力へリダイレクトさせて、ファイル内容を1行ずつ読み込ませる。<br> | ファイルを標準入力へリダイレクトさせて、ファイル内容を1行ずつ読み込ませる。<br> | ||
以下の例では、list.txtファイルの内容を読み込み、1行ずつechoコマンドで表示させている。<br> | 以下の例では、list.txtファイルの内容を読み込み、1行ずつechoコマンドで表示させている。<br> | ||
< | <syntaxhighlight lang="sh"> | ||
# 実行 | # 実行 | ||
while read line | while read line | ||
199行目: | 199行目: | ||
ファイル内容をcatコマンドで表示させて、それを変数に格納し、ヒアドキュメントを使用して読み込む。<br> | ファイル内容をcatコマンドで表示させて、それを変数に格納し、ヒアドキュメントを使用して読み込む。<br> | ||
以下の例では、list.txtファイル内容を変数DATAに格納して、ヒアドキュメントを使用して変数の内容を読み込んでいる。<br> | 以下の例では、list.txtファイル内容を変数DATAに格納して、ヒアドキュメントを使用して変数の内容を読み込んでいる。<br> | ||
< | <syntaxhighlight lang="sh"> | ||
DATA=`cat ./list.txt` | DATA=`cat ./list.txt` | ||
while read line | while read line | ||
217行目: | 217行目: | ||
ファイル内容をcatコマンドで表示させて、その結果をパイプを使用して読み込む。<br> | ファイル内容をcatコマンドで表示させて、その結果をパイプを使用して読み込む。<br> | ||
以下の例では、lixt.txtファイルの内容をcatコマンドで表示させて、その結果をパイプでwhile readコマンドに渡している。<br> | 以下の例では、lixt.txtファイルの内容をcatコマンドで表示させて、その結果をパイプでwhile readコマンドに渡している。<br> | ||
< | <syntaxhighlight lang="sh"> | ||
# 実行 | # 実行 | ||
cat ./list.txt | while read line | cat ./list.txt | while read line |