명령 대체

명령 대체

나는 거짓말하지 않을 것이다. 이것은 임무를 위한 것입니다. 막히고 좀 답답해서 최후의 수단으로 여기까지 왔으니 도와주세요.

따라서 경로가 상대 경로인지 절대 경로인지 찾아서 인쇄하는 스크립트를 작성해야 합니다. 교수님께서 명령줄 대체를 하라고 하신 마지막 부분에서 막혔는데 어떻게 해야 할지 모르겠습니다. 이것이 내가 지금까지 가지고 있는 것입니다.

if [ "$#" -ne 1 ]; then
    echo 1>&2 "$0: please insert one valid file name;found $# ($*) "
    echo 1>&2 "Usage: $0 [Filename..]"
    exit 2
fi

if [ -z "$1" ] ; then
        echo 1>&2 "$0: file name cannot be empty; found $# ($*) "
        echo 1>&2 "Usage: $0 [filename...] "
        exit 2
fi

if [ ! -L "$1" ] ; then
        echo 1>&2 "$0: The pathname '$1' is not a symlink"
        echo 1>&2 "Usage: '$0' [symlink] "
        exit 2
fi

a=ls "$1" | awk '{ print $NF }'

if [ -z "$a" ] ; then
        echo 1>&2 "$0: Pathname is empty "
        exit 3
fi


    type=$(a)
    case "$b" in
    /* )    type='an Absolute Pathname' ;;
    * )     type='a Relative Pathname in the current directory' ;;  # the "default" match
    echo "pathname'$a' is $type"

    esac

다음은 그가 우리에게 원하는 작업을 보여주는 스크린샷입니다. 여기에 이미지 설명을 입력하세요.

질문이 명확하지 않은 경우 질문해 주세요. 감사해요

답변1

스크립트는 아직 준비되지 않았지만 이제 올바른 방향으로 가고 있습니다.

if [ "$#" -ne 1 ]; then
    echo 1>&2 "$0: please insert one valid file name;found $# ($*) "
    echo 1>&2 "Usage: $0 [Filename..]"
    exit 2
fi

if [ -z "$1" ] ; then
        echo 1>&2 "$0: file name cannot be empty; found $# ($*) "
        echo 1>&2 "Usage: $0 [filename...] "
        exit 2
fi

if [ ! -L "$1" ] ; then
        echo 1>&2 "$0: The pathname '$1' is not a symlink"
        echo 1>&2 "Usage: '$0' [symlink] "
        exit 2
fi

a=$(ls -l "$1" | awk '{ print $NF }')

if [ -z "$a" ] ; then
        echo 1>&2 "$0: A Really Good Error Message."
        exit 3
fi

#    type=$a
    case "$a" in
    /*)    type='an Absolute Pathname' ;;
    *)     type='a Relative Pathname in the current directory' ;;  # the "default" match
    esac
    echo "pathname'$a' is $type"

관련 정보