私はCシェルに初めて触れました。コマンドラインからファイルを読み込み、zipファイル、.txt、シンボリックリンク、パイプ、またはその他のファイル(「不明」)であることを確認しようとしています。
その後、タイプに応じていくつかのコマンドを実行したいと思います。たとえば、txtファイルの場合は、これに関する情報(「テキストファイルです」)を印刷してサイズを指定します。
これが私が今まで得たものです:
!/bin/csh
if ( "echo ${1} | cut -d'.' -f2" == "zip" ) then
echo $1 is a zip file
else
echo sorry, $1 is not a zip file
endif
答え1
switch
ファイル名を分析するために使用されます。
switch ($1)
case *.zip:
echo "$1 is a zip file"
breaksw
default:
echo "${1}: not supported"
endsw
ファイルタイプを解析するには、出力を解析しますls
。最初の文字はファイルタイプです。
switch ("`ls -logd "$1"`")
case d*:
echo "$1 is a directory"
breaksw
# ...
endsw
実際には探しているかもしれませんfile
ファイルの内容を分析して、含まれるデータの形式を決定し、一般的ではないファイルのファイルタイプを報告するコマンド。
file -- "$1"
答え2
他のシェルと同様に、バックティックを使用して内部コマンドの結果を評価します。だから代わりに
"echo ${1} | cut -d'.' -f2"
これは文字列「zip」とまったく同じではない文字列です。
`echo ${1} | cut -d'.' -f2`
内部コマンドを評価し、結果を返します。