linux shellテストファイルの状態
4316 ワード
スクリプトを書くときは、文字列が等しいかどうかを判断し、ファイルの状態やデジタルテストを確認することがあります.
Testコマンドは、文字列、ファイルの状態、および数字をテストするために使用します.
ファイル、文字列、数字にtestコマンドを使用します.
数字と文字列にexprコマンドを使います.
exprコマンドテストと数値出力を行います.最後にステータスコマンドを終了します.テストはtestとexprの両方を0で正確に表し、1はエラーを返します.
testは通常2つのフォーマットがあります.
test conditionまたは[condition]
四角いかっこを使うときは、条件の両側にスペースを入れるようにします.
ファイル状態テスト
-dディレクトリ -sファイルの長さは0より大きく、非空です.
-f正規ファイル -w書き込み可能
-L記号接続 -uファイルにはsuidビット設定があります.
-r 読み取り可能 -x 実行可能
example:
ファイルの状態がOKかどうかをテストしますが、二つのファイルの状態を比較する場合があります.shellは三つの論理操作を提供してこの機能を完成します.
-a論理と、オペレータの両方は真であり、結果は真である.そうでなければ偽である.
-o論理または操作子の両方が真であり、結果は真である.そうでなければ偽である.
example:
二つのファイルが全部読めますか?
Begin test total 8-rw-r--1 hadoop hadoop 0 Feb 6 02:45 file 1-rw-r--1 hadoop hadoop 0 Feb 6 02:45 file 2 0 end test
example:
ファイルの一つが実行可能かどうかをテストします.
test begin total 8-rwxrw-r--1 hadoop hadoop 0 Feb 6 02:45 file 1-rw-r--1 hadoop hadoop 0 Feb 6 02:45 file 2 0 test end
example:
ファイルfile 1が読み取り可能、書き込み可能、実行可能かどうかをテストします.
Begin test-rwxrw-r--1 hadoop hadoop 0 Feb 6 02:45 file 1 0 end test
文字列テスト
文字列テストでは、エラーが重要な一部をキャプチャします.特に、ユーザーが変数を入力または比較する際に重要です.
test「string」
test string_operator「string」
test「string」string_operator「string」
[stringTeart string]
[string strigganter string]
ここ、ストリングスoperatorは
=2文字列が等しい
!=二つの文字列は等しくありません.
-z空の列
-nは空です
変数のeditorに値を付けます.
example:
vi test begin is the string null?1 is the string vi0 vi tape:/dev/rmt 0 tape 2:/dev/rmt 1 is the tape=tape 2?0 is the tape!=tape 20 end test
テスト値
“number”numeric_operator「number」
または
[number]numericator"number"
number_operator
-eq値が等しい
-ne値が等しくない
-gt 1番目の数は2番目の数より大きいです.
-lt最初の数が2番目の数より小さい
-le最初の数が2番目の数以下です.
-ge 1番目の数が2番目の数より大きいです.
example:
test begin is number eq 130?0 is number eq 1001 is number gt 1000 is 13 gt 15 0 is 990 le 9950 is 990 le 995 and 123 gt 33?0 end test
Testコマンドは、文字列、ファイルの状態、および数字をテストするために使用します.
ファイル、文字列、数字にtestコマンドを使用します.
数字と文字列にexprコマンドを使います.
exprコマンドテストと数値出力を行います.最後にステータスコマンドを終了します.テストはtestとexprの両方を0で正確に表し、1はエラーを返します.
testは通常2つのフォーマットがあります.
test conditionまたは[condition]
四角いかっこを使うときは、条件の両側にスペースを入れるようにします.
ファイル状態テスト
-dディレクトリ -sファイルの長さは0より大きく、非空です.
-f正規ファイル -w書き込み可能
-L記号接続 -uファイルにはsuidビット設定があります.
-r 読み取り可能 -x 実行可能
example:
#!/bin/sh
#this is a shell command about test the file is a dir
echo "begin test the ~/input"
test -d ~/input
echo $?
テスト時に論理演算子を使うファイルの状態がOKかどうかをテストしますが、二つのファイルの状態を比較する場合があります.shellは三つの論理操作を提供してこの機能を完成します.
-a論理と、オペレータの両方は真であり、結果は真である.そうでなければ偽である.
-o論理または操作子の両方が真であり、結果は真である.そうでなければ偽である.
example:
二つのファイルが全部読めますか?
#!/bin/sh
#this is a command to test -a
echo "begin test"
ls -l ~/test/
test -w file1 -a -w file2
echo $?
echo "end test"
レスリング:Begin test total 8-rw-r--1 hadoop hadoop 0 Feb 6 02:45 file 1-rw-r--1 hadoop hadoop 0 Feb 6 02:45 file 2 0 end test
example:
ファイルの一つが実行可能かどうかをテストします.
#!/bin/sh
#this is a command to test -o
echo "test begin"
ls -l
[ -x file1 -o -x file2 ]
echo $?
echo "test end"
レスリング:test begin total 8-rwxrw-r--1 hadoop hadoop 0 Feb 6 02:45 file 1-rw-r--1 hadoop hadoop 0 Feb 6 02:45 file 2 0 test end
example:
ファイルfile 1が読み取り可能、書き込み可能、実行可能かどうかをテストします.
#!/bin/sh
#this is a command to test a file "rwx"
echo "begin test"
ls -l file1
[ -r file1 -a -w file1 -a -x file1 ]
echo $?
echo "end test"
レスリング:Begin test-rwxrw-r--1 hadoop hadoop 0 Feb 6 02:45 file 1 0 end test
文字列テスト
文字列テストでは、エラーが重要な一部をキャプチャします.特に、ユーザーが変数を入力または比較する際に重要です.
test「string」
test string_operator「string」
test「string」string_operator「string」
[stringTeart string]
[string strigganter string]
ここ、ストリングスoperatorは
=2文字列が等しい
!=二つの文字列は等しくありません.
-z空の列
-nは空です
変数のeditorに値を付けます.
[hadoop@master test]$ editor=vi
[hadoop@master test]$ echo $editor
vi
[hadoop@master test]$ editor="vi test"
[hadoop@master test]$ echo $editor
vi test
変数と文字列の等号にはスペースがないことに注意してください.example:
#!/bin/sh
#this is a command to test string
editor=vi
echo $editor
echo "test begin"
echo "is the string null?"
[ -z $editor ]
echo $?
echo "is the string vi?"
[ $editor = "vi" ]
echo $?
echo $editor
tape="/dev/rmt0"
tape2="/dev/rmt1"
echo "tape:$tape"
echo "tape2:$tape2"
echo "is the tape = tape2?"
[ "$tape"="$tape2" ]
echo $?
echo "is the tape != tape2?"
[ "$tape"!="$tape2" ]
echo $?
echo "end test"
レスリング:vi test begin is the string null?1 is the string vi0 vi tape:/dev/rmt 0 tape 2:/dev/rmt 1 is the tape=tape 2?0 is the tape!=tape 20 end test
テスト値
“number”numeric_operator「number」
または
[number]numericator"number"
number_operator
-eq値が等しい
-ne値が等しくない
-gt 1番目の数は2番目の数より大きいです.
-lt最初の数が2番目の数より小さい
-le最初の数が2番目の数以下です.
-ge 1番目の数が2番目の数より大きいです.
example:
#!/bin/sh
#this is a command to test number
echo "test begin"
number=130
echo "is number eq 130?"
[ "$number" -eq "130" ]
echo $?
echo "is number eq 100?"
[ "$number" -eq "100" ]
echo $?
echo "is number gt 100?"
[ "$number" -gt "100" ]
echo $?
source_count=13
dest_count=15
[ "$dest_count" -gt "$source_count" ]
echo "is 15 gt 13 "
echo $?
[ "990" -le "995" ]
echo "is 990 le 995?"
echo $?
[ "990" -le "995" -a "123" -gt "33" ]
echo "is 990 le 995 and 123 gt 33?"
echo $?
echo "end test"
レスリング:test begin is number eq 130?0 is number eq 1001 is number gt 1000 is 13 gt 15 0 is 990 le 9950 is 990 le 995 and 123 gt 33?0 end test