ksh 쉘에서 다음을 수행하려고 합니다.
JMX_ROOT=/bfs-build/build-info/mep_mainline-Linux.latest/core/mainline/automation
SMOKE_JMX_LOCATION="$JMX_ROOT/\"Smoke Set\"/*.txt $JMX_ROOT/\"Smoke Set\"/*.TXT
$JMX_ROOT/\"Smoke Set\"/SmokeSet.jmx"
cp $SMOKE_JMX_LOCATION /var/tmp
즉, .txt, .TXT 및 .jmx 파일을 한 디렉터리에서 다른 디렉터리로 복사할 때 "Smoke Set"의 공백으로 인해 오류가 발생합니다.
어떤 도움이라도 대단히 감사하겠습니다.
답변1
일반적으로 문자열에 여러 경로를 넣을 수 없습니다.아무것* 이는 대부분의 파일 시스템에서 유효한 문자열이자 유효한 경로입니다. 배열을 사용할 수 있습니다.
JMX_ROOT=/bfs-build/build-info/mep_mainline-Linux.latest/core/mainline/automation
set -A SMOKE_JMX_LOCATIONS "$JMX_ROOT/Smoke Set/"*.txt "$JMX_ROOT/"Smoke Set"/"*.TXT "$JMX_ROOT/Smoke Set/SmokeSet.jmx"
cp "${SMOKE_JMX_LOCATIONS[@]}" /var/tmp
* 누군가 항의하기 \0
전에 /
전자는 변수의 일부가 될 수 없습니다(적어도 ksh가 다음과 같이 작동하는 경우).불다;참조를 찾을 수 없음)파일 이름, 하지만 아주 잘 작동해요길.