나는 find
을 사용하여 폴더를 검색하고 경로를 저장하는 bash 스크립트에 한 줄을 가지고 있습니다."찾기"bash에서 복수 공백 제거
findfolder=$(eval echo $(eval "find "$HOME" -iname "$find_regex" -type d -print 2>/dev/null | sort -d | head -1"))
을하고 내가 거기에 두 개의 공백이있는 폴더를 검색 할 경우는 어떤 이유에서 작동 거의 모든 경우, 그러나 경로 어디를 반환합니다, 다음과 같이
라인이다 모든 두 개의 공백이 단일 공백으로 전환되었습니다.
그래서, 폴더를 찾고 있어요 경우는 "내"와 "음악"사이에 두 개의 공백으로 "내 음악"라고, 그것은 하나 개의 공간을 "내 음악"을 반환합니다.
터미널에서 똑같은 명령을 직접 실행하면 올바른 폴더를 얻을 수 있습니다.
왜 이런 일이 발생합니까? (더 많은 코드가 필요하면 알려주세요. 터미널에서 똑같은 명령을 실행 한 이후로 관련성이 없어 보입니다. 명백한 이유로 wall-of-text를 원하지 마십시오.)
편집 : 그것은 지금 노력하고 있습니다
. 첫 번째 평가 또는 반향 (확신 할 수는 없지만 테스트 결과에 따르면 eval)은 출력이 붕괴되어 "불필요한"간격을 제거하고있었습니다. 작업 코드는 다음과 같습니다 당신이 평가 후면 문으로 뭘 하려는지 이해가 안
findfolder="$(eval "find "$HOME" -iname "$find_regex" -type d -print 2>/dev/null | sort -d | head -1")"
흥미 롭습니다. 하지만 이중 $ ($)와 evals가 필요합니까? –
@ PéterVarga 그럼 eval을 사용하기 전에 제대로 작동하지 않았습니다. 그들은 echo를 사용하여 결과에 변수를 할당하는 문제를 해결했습니다. – keyser
@ PéterVarga 이제 해결되었습니다. 첫 번째 평가와 반향은 필요하지 않으며 붕괴의 원인이되었습니다. 이상한 점을 발견했다. – keyser