/bin/x86_64/bin/ls
bashシェルスクリプトにディレクトリがあるかどうかを確認する方法
私が試したことは次のとおりです。
#!/bin/bash
if [ $# -eq 2 ]; then
if [[ "$1" = /* ]]
then
cd ./bin/x86_64/bin/ls
if [ -d "$1" ]; then
echo "ok"
i="$1"
echo $i
else
echo "error2"
exit
fi
else
echo "error"
exit
fi
fi
答え1
次のコマンドを使用して、ディレクトリが存在するかどうかを確認できます。
if [[ -d "$1" ]]; then
使用するファイルを確認したい場合
if [[ -e "$1" || -L "$1" ]]; then
ファイルが一般ファイル(または一般ファイルへのシンボリックリンク)であることを確認し、ディレクトリ(またはデバイス、ソケット、名前付きパイプ...)ファイルでないことを確認するには、次のようにします。
if [[ -f "$1" ]]; then
ファイルが存在する可能性があるがサイズがゼロでないことを確認したい場合:
if [[ -s "$1" ]] then;
stat()
これらのテストはすべてシステムコールの結果に基づいています(-L
依存関係を除くlstat()
)。ファイルへの呼び出しを実行する権限がない場合(たとえば、ファイルが存在するディレクトリやシンボリックリンクファイルの検証に参加しているディレクトリへの検索アクセス権がないため)、これらのテストは自動的に返されます。ファイルが存在しないかのように false です。
[[ ... ]]
演算子であり、ksh
andでもサポートされています。で使用される標準対応コマンドはuseコマンドです(上記の2番目の例ではuse)。bash
zsh
sh
[
[ -e "$1" ] || [ -L "$1" ]
答え2
ディレクトリがcd
存在する場合、コードは機能します。
cd
この行を私のシステムのディレクトリに変更しました(diff)。
- cd ./bin/x86_64/bin/ls
+ cd /bin/
次に、次を実行します。
ry@~/Desktop:$ sh test /bin /
ok
/bin
次の理由で、スクリプトに2つのパラメータを指定する必要があります。if [ $# -eq 2 ]; then
また./bin/
実際にはと同じですbin/
。
答え3
シェルスクリプトにディレクトリがあることを確認するには、次のコマンドを使用します。
dir=$1
if [ -d "$dir" ]; then
#means that $dir exists.
fi
反対を確認するには追加してください! -d 前 ->[ ! -d ....]