このスクリプトが何をするのか誰か教えてもらえますか? 3 行目の -z は何ですか?
Filename=File.txt
X=`ls /home/$Filename`
if [ -z "$X" ]; then
exit
fi
Filename=File.txt
$Filename
変数の値は になりますFile.txt
。
X=`ls /home/$Filename`
$X
変数には、コマンドの出力が含まれるようになりましたls /home/File.txt
。ファイルが存在する場合は何かが含まれ、存在しない場合は空の文字列になります。
if [ -z "$X" ]; then
変数の値が$X
空の文字列 (/home/File.txt
存在しないことを意味し、それ以外の場合$X
は何かを含む) の場合:
exit
fi
これはかなりぎこちない書き方です:
if ! [ -e "/home/File.txt" ]; then exit; fi
-e
パスが存在する場合は true を返します。-f
ファイル ( )、ディレクトリ ( -d
)、シンボリック リンク ( -L
) などもチェックできます。man [
で使用できるその他のオプションについては、 を参照してください[
。また、次の項目もあります-z
。
-z string
の長さstring
が 0 の場合は true。
スクリプトが行うことは
Filename という変数を作成します Filename の値は File.txt です コマンド ls を実行します File.txt は結果を変数 X に割り当てます 次に、変数 X の値の長さがゼロかどうかをチェックします ゼロの場合、スクリプトは終了しますプログラムが行うのは、ファイルが存在するかどうかをチェックすることです
これらすべての行の代わりに、使用できたはずです
if [ -a "$Filename"]
このリンクはあなたに役立ちます
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
存在するかどうかをテストし、/home/File.txt
存在しない場合はexit
. しかし、これは理想的な解決策ではありません。次のように記述したほうがよいでしょう:
if ! test -e /home/File.txt; then exit; fi
$ help test
test: test [expr]
Evaluate conditional expression.
Exits with a status of 0 (true) or 1 (false) depending on
the evaluation of EXPR. Expressions may be unary or binary. Unary
expressions are often used to examine the status of a file. There
are string operators and numeric comparison operators as well.
The behavior of test depends on the number of arguments. Read the
bash manual page for the complete specification.
File operators:
-a FILE True if file exists.
-b FILE True if file is block special.
-c FILE True if file is character special.
-d FILE True if file is a directory.
-e FILE True if file exists.
-f FILE True if file exists and is a regular file.
-g FILE True if file is set-group-id.
-h FILE True if file is a symbolic link.
-L FILE True if file is a symbolic link.
-k FILE True if file has its `sticky' bit set.
-p FILE True if file is a named pipe.
-r FILE True if file is readable by you.
-s FILE True if file exists and is not empty.
-S FILE True if file is a socket.
-t FD True if FD is opened on a terminal.
-u FILE True if the file is set-user-id.
-w FILE True if the file is writable by you.
-x FILE True if the file is executable by you.
-O FILE True if the file is effectively owned by you.
-G FILE True if the file is effectively owned by your group.
-N FILE True if the file has been modified since it was last read.
FILE1 -nt FILE2 True if file1 is newer than file2 (according to
modification date).
FILE1 -ot FILE2 True if file1 is older than file2.
FILE1 -ef FILE2 True if file1 is a hard link to file2.
String operators:
-z STRING True if string is empty.
-n STRING
STRING True if string is not empty.
STRING1 = STRING2
True if the strings are equal.
STRING1 != STRING2
True if the strings are not equal.
STRING1 < STRING2
True if STRING1 sorts before STRING2 lexicographically.
STRING1 > STRING2
True if STRING1 sorts after STRING2 lexicographically.
Other operators:
-o OPTION True if the shell option OPTION is enabled.
-v VAR True if the shell variable VAR is set
! EXPR True if expr is false.
EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.
EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.
arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,
-lt, -le, -gt, or -ge.
Arithmetic binary operators return true if ARG1 is equal, not-equal,
less-than, less-than-or-equal, greater-than, or greater-than-or-equal
than ARG2.
Exit Status:
Returns success if EXPR evaluates to true; fails if EXPR evaluates to
false or an invalid argument is given.