所以,我有以下問題,但我的問題是更通用的 - 怎麼看的由bash的變量引用的內存確切的內容理解爲什麼他們不匹配:查看bash變量的確切內容? (hexdump都沒有幫助)
# [[ $c1 == $c ]] || echo nope
nope
# [[ $c1 == "bkup dt" ]] || echo nope
# [[ $c == "bkup dt" ]] || echo nope
nope
# hexdump -C <<<$c
00000000 62 6b 75 70 20 64 74 0a |bkup dt.|
00000008
# hexdump -C <<<$c1
00000000 62 6b 75 70 20 64 74 0a |bkup dt.|
00000008
# [ "$c1" = "$c" ] || echo nope
nope
# [ ! "$c1" = "$c" ] || echo nope
還是它看起來像一個錯誤?我可以重複問題:
$ cd /tmp
$ mkdir aaa
$ echo 2 > aaa/1
$ echo 2 > aaa/2
$ c=$(ls -A aaa)
$ [[ $c == $(echo $c) ]] || echo not equal
not equal
$ hexdump -C <<<$c
00000000 31 20 32 0a |1 2.|
00000004
$ hexdump -C <<<$(echo $c)
00000000 31 20 32 0a |1 2.|
00000004
$ c1="1 2"
$ [[ $c1 == $(echo $c1) ]] || echo not equal
$ [[ $c1 == $(echo $c) ]] || echo not equal
$ [[ $c1 == $c ]] || echo not equal
not equal
您正在看到確切的con變量的帳篷;你只是得到了由這個字符串引起的*額外*換行符('0a')。 'printf'%s'「$ c」|如果你不想簡單地忽略它,hexdump -C'會忽略它。 – chepner