Bash

查找命令中的錯誤(cygwin)

  • May 4, 2017

我有以下腳本:

#!/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

附言。不確定這是否適合這個 stackexchange 部分,因為 cygwin 並不是真正的 nix。但我希望我能在這裡得到更多的回复。此外,我已經嘗試過 Windows 10 模組“Linux for Windows”,它是非常早期的測試版。

這是違規行。您需要在列印時轉義引號,但在執行時不需要。

_find=`find "$_pwd" -maxdepth 1 -type d | wc -l`

引用自:https://unix.stackexchange.com/questions/362946