/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
파일이 존재할 수 있지만 크기가 0이 아닌지 확인하려는 경우:
if [[ -s "$1" ]] then;
stat()
이러한 모든 테스트는 시스템 호출 결과를 기반으로 합니다 ( -L
종속성 제외 lstat()
). 파일에 대한 호출을 수행할 권한이 없는 경우(예: 파일이 있는 디렉터리 또는 심볼릭 링크 파일 확인에 참여하는 디렉터리에 대한 검색 액세스 권한이 없기 때문에) 이러한 테스트는 자동으로 반환됩니다. 파일이 존재하지 않는 것처럼 false입니다.
[[ ... ]]
연산자이며 ksh
and에서도 지원됩니다. 에서 사용되는 표준 상응 명령은 use 명령입니다(위의 두 번째 예에서는 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
다음과 같은 이유로 스크립트에 두 개의 매개변수를 제공해야 합니다.if [ $# -eq 2 ]; then
또한 ./bin/
실제로는 와 동일합니다 bin/
.
답변3
쉘 스크립트에 디렉토리가 있는지 확인하려면 다음 명령을 사용할 수 있습니다.
dir=$1
if [ -d "$dir" ]; then
#means that $dir exists.
fi
반대를 확인하려면 추가하세요! -d 이전 ->[ ! -d ....]