echo ファイルなし. ディレクトリが存在しない場合 ディレクトリが存在していないことを確認させる場合は、演算子に「!」を付けることで結果を反転させることが出来ます。 if [ ! #!/bin/sh /bin/touch 1 1.shを実行するとエラーになります。。 # ./1.sh: bad interpreter: そのようなファイルやディレクトリはありません cronでも動きません。。 /bin/bash: 1.sh: /bin/sh: bad interpreter: No such file or directory cat -e で見ると、改行コードに\rが含まれていることが分かる。 $ cat -e hello.sh #!/bin/bash^M$ echo "hello,world"^M$ #!/bin/sh BASEDIR=$(cd $(/usr/bin/dirname $0); pwd) これで BASEDIRに、このスクリプトが置いてあるディレクトリが入ります。 echo で改行したくない System V は、\c を利用し、BSD系は -n オプションを利用する。 ここで他の人が言ったように、これはPOSIX準拠のために厳密には必要ありません。 しかし、おそらく既存のソフトウェアとの互換性ははるかに重要です(結局、POSIXの目的は、すべての準拠オペレーティングシステムで特定の機能を動作させることです)/bin/sh。 else. filePath = "./dir1/file1.txt" if [-e $ filePath]; then. 佐々木 真(ササキ マコト) 1979年1月1日生まれ。男性。イギリス生まれの日本育ち。システム開発系の仕事を中心に10年以上it業界に生息しているが、実は横文字と専門用語が苦手。 これはインタプリタの指定をしています。 ここで「えっ! インタプリタって何? cat $ filePath. ファイルの中身です。 ファイルがない場合は、catをすると下記のようになりますね。 これを避けるなら、上記のチェックが活きますね。 1. 2 $ cat … 下記が実行結果になります。 1. 以下、検証. ``` if [ -e {確認したいファイルかディレクトリのパス} ]; then # 存在する場合 else # 存在しない場合 fi ``` とすればファイルかディレクトリが存在するか確認でき、-eのオプションを-fにすればファイルのみ、-dにすればディレクトリのみを確認することができる。 $ sh check_dir_1.sh Directory exists. fi. はカレントディレクトリに存在するはずのディレクトリとみなされています) コード: $ cat xxx.sh \#!/bin/bash echo Hello $ bash xxx.sh xxx.sh: line 1: #!/bin… 前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 本記事では、ディレクトリの存在を確認する方法を比較します。 前書き 自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。 本記事では、ディレクトリの存在を確認する方法を比較します。 というわけでコマンドとして実行できたわけです。 #!/usr/bin/env rubyの記述は何なのか. 2 $. #!/bin/sh . cat -e で見ると、改行コードに\rが含まれていることが分かる。 $ cat -e hello.sh #!/bin/bash^M$ echo "hello,world"^M$ 以下、検証. sh. / sample. こんなエラーで手元のスクリプトが動かない。 うーん、確かに存在するし、権限もあるんだが…。 shebang は #!/usr/bin/env python3 になってるしなぁ。 : そのようなファイルやディレクトリはありません 1行目にprint文仕込んでも変わらんか。 shebangが間違ってるのかなぁ。 こんなエラーで手元のスクリプトが動かない。 うーん、確かに存在するし、権限もあるんだが…。 shebang は #!/usr/bin/env python3 になってるしなぁ。 : そのようなファイルやディレクトリはありません 1行目にprint文仕込んでも変わらんか。 shebangが間違ってるのかなぁ。