質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
csh

cshは、C言語スタイルの構文を持つUNIX系OSのシェルの1つのことです。

Q&A

0回答

1331閲覧

Cシェルのファイル存在チェックとファイルの中身のからチェック

wada3

総合スコア103

csh

cshは、C言語スタイルの構文を持つUNIX系OSのシェルの1つのことです。

0グッド

0クリップ

投稿2023/02/03 06:23

編集2023/02/03 06:26
パターン①

   if (-s ファイルパス) then
echo 'ファイルが存在かつファイルが空ではありません。'
本文 | /bin/mailx -s タイトル -S SMTP -r 送り元 送り先
endif

パターン②

   パス -e -s `cat ファイルパス <<EOF
本文
##EOF

パターン②もファイル存在チェックとファイルの中身のからチェックをしているであっていますか?

また-sだけでもファイルがない場合もはじいてくれていますが-eしてからファイルが存在したらファイルの中身チェックで-sしようか迷っています。-sだけではまずいですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/02/03 06:38

どちらもCshellスクリプトの体をなしていません。
wada3

2023/02/03 06:40

cshファイルですが間違っていますか?
otn

2023/02/03 07:21

はい。間違ってますね。 実行してエラーの出ないコードを載せましょう。
68user

2023/02/03 07:24

実際に使っているのが csh なのか tcsh なのかわかりませんが、tcsh のマニュアル的には https://linuxjm.osdn.jp/html/tcsh/man1/tcsh.1.html > file はコマンドと展開されたファイル名で、 指定された実ユーザに対する関係があるかどうか テストします。 file が存在していない場合、 (略) すべての問い合わせは偽 (たとえば `0') を返します。 だそうなので、-s だけでもよいです。 > パス -e -s `cat ファイルパス 意図がよくわかりませんが、存在チェックと0バイトチェックなら  if ( -e パス && -s パス ) then じゃないでしょうか。
wada3

2023/02/03 07:26

ご回答ありがとうございます。cshファイルで冒頭に#!/bin/csh -f をつけているのでcshだと思っています。 cshも> file はコマンドと展開されたファイル名で、 指定された実ユーザに対する関係があるかどうか テストします。 file が存在していない場合、 (略) すべての問い合わせは偽 (たとえば `0') を返します。は同じでしょうか?
68user

2023/02/03 07:37

csh か tcsh かは OSやディストリビューションによると理解しています。 https://ja.wikipedia.org/wiki/C_Shell > macOS や Red Hat Linux など多くのシステムのcshは実際には改良版のtcshである。tcshの実行ファイルは "csh" と "tcsh" の両方にハードリンクされていて、どちらの名前でも同じ改良版のtcshが呼び出される。 > DebianやUbuntuではcshとtcshの2種類のパッケージを用意しており、前者はオリジナルのBSD版csh[5][6]、後者は改良版のtcsh[7][8]となっている。両方をインストールした場合、cshとしてどちらを使用するかupdate-alternativesコマンドで選択できる。 が、大昔の csh のマニュアルでも https://man.freebsd.org/cgi/man.cgi?query=csh&apropos=0&sektion=0&manpath=2.11+BSD&arch=default&format=html > If the file does not exist or is inaccessible then all enquiries return false, i.e. `0'. だそうなので、csh でもそういう仕様と思われます
otn

2023/02/03 08:16

csh --version を実行すれば、tcshかどうかわかります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問