Bash 스크립트에서 명령 출력 형식 변경

Bash 스크립트에서 명령 출력 형식 변경

스크립트에서 :를 제거한 다음 인쇄물에서 /를 \로 복원해 보십시오.

현재 Linux 경로를 표시해야 합니다. 홈 디렉토리는 다음 위치에 있습니다: rtp1-filer-ns:/homedir-private/private007/user

사용자가 Windows 경로를 홈 디렉터리(\rtp1-filer-ns\homedir-private\private007\user)로 쉽게 설정할 수 있도록 다시 포맷하고 싶습니다.

현재 스크립트 부분은 다음과 같습니다

echo "쉘은 다음과 같습니다: `ypmatch $EndUser passwd | awk -F\: '{ print $7 }'`"
에코""
echo "홈 디렉터리는 다음 위치에 있습니다:"
   ypmatch $EndUser auto_home
에코""
echo "홈 디렉터리의 Windows 경로:"
echo "\\\\`ypmatch $EndUser auto_home | awk -F':' '{print $1}'`\\$EndUser"

인쇄해 주세요:

기본 디렉터리는 다음 위치에 있습니다.
rtp1-filer-ns:/homedir-private/private007/user

Windows 홈 디렉터리 경로:
\\rtp1-filer-ns\사용자

sed /awk와 같은 것을 사용할 수 있다고 가정하면 $EndUser는 정의된 변수입니다.

답변1

그리고bash

첫 번째 방법 - 매개변수 대체 사용

#use command substitution to set command output into variable var
var=$(ypmatch $EndUser auto_home)
#strip out the first :
var=${var/:}
#replace all instances of / with \
var=${var//\//\\}
echo $var

rtp1-filer-ns\homedir-private\private007\user

두 번째 방법 - 배열 사용

# Set path components into array frags
IFS=/ read -a frags < <(ypmatch $EndUser auto_home)

# Strip ":" off rtp1-filer-ns
frags[0]="${frags[0]%:}"

# Set IFS to \ to print frags \-separated
echo "$(IFS=\\ ;printf '%s\n' "${frags[*]}";)"

rtp1-filer-ns\homedir-private\private007\user

관련 정보