다음 스크립트가 있습니다.
#!/bin/bash
cd "/cygdrive/d/apple1/"
_pwd=`pwd`
_find=`find \"$_pwd\" -maxdepth 1 -type d | wc -l`
echo "command: find \"$_pwd\" -maxdepth 1 -type d | wc -l"
echo "find: $_find"
if [ "$_find" -gt 1 ]; then
echo ""
fi
이것은 스크립트 출력입니다
user@my-laptop ~/scripts
$ ./jltest.sh
command: find "/cygdrive/d/apple1" -maxdepth 1 -type d | wc -l
find:
./jltest.sh: line 9: [: : integer expression expected
user@my-laptop ~/scripts
$ find "/cygdrive/d/apple1" -maxdepth 1 -type d | wc -l
3
첫 번째 명령에서 볼 수 있듯이 "예상 정수 표현식" 오류가 발생합니다. 하지만 수동으로 명령을 실행하고 숫자 3을 얻습니다.
왜 이런 일이 발생하는지 아시나요?
이것이 내 "apple1" 폴더의 내용입니다.
user@my-laptop ~/scripts
$ ls -la /cygdrive/d/apple1/
total 4
drwxrwx---+ 1 user None 0 May 3 13:11 .
drwxrwx---+ 1 SYSTEM SYSTEM 0 May 3 13:11 ..
drwxrwx---+ 1 user None 0 May 3 13:11 apple11
drwxrwx---+ 1 user None 0 May 3 13:11 apple12
cygwin은 실제로 nix가 아니기 때문에 이것이 이 스택 교환 섹션에 맞는지 확실하지 않습니다. 하지만 여기서 더 많은 답변을 얻을 수 있기를 바랍니다. 또한 아직 초기 베타 버전인 Windows 10 모듈 "Linux for Windows"를 사용해 보았습니다.
답변1
문제의 라인입니다. 인쇄할 때는 따옴표를 이스케이프해야 하지만 실행할 때는 이스케이프해야 합니다.
_find=`find "$_pwd" -maxdepth 1 -type d | wc -l`