コマンドの置き換え

コマンドの置き換え

私は嘘をつかないだろう。これは任務のためのものです。詰まってちょっと苦しくて最後の手段でここまで来たので助けてください。

したがって、パスが相対パスであるか絶対パスであるかを調べて印刷するスクリプトを作成する必要があります。教授がコマンドラインの置き換えをするように言われた最後の部分で詰まったのですが、どうすればいいのかわかりません。これが私が今まで持っているものです。

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"

関連情報