完全な相対パスパラメータを使用してディレクトリを生成できないのはなぜですか?

完全な相対パスパラメータを使用してディレクトリを生成できないのはなぜですか?

完全な相対パスパラメータを使用してディレクトリを生成できないのはなぜですか?これが私が試したことです:

#!/bin/bash
args=("$@")
# Print the command and run it. Exit the script on failure.
run()
{
        if $VERBOSE; then
                echo "$@"
                "$@"
        else
                "$@" >& /dev/null
        fi
        result=$?
        if [ $result -ne 0 ]; then
                exit $result
        fi
}
                if [ ! -d ${args[0]} ]; then
                        run mkdir -p ${args[0]}
                fi

                run cd ./release/
                run cp -rf ./html/ ${args[0]}

しかし、私は次のようになります。

mkdir -p ./bla/bla/cloud/
cd ./release/
cp -rf ./html/ ./bla/bla/cloud/
cp: cannot create directory `./bla/bla/cloud/': No such file or directory

そのため、次のように呼び出されたときにスクリプトが機能する方法がわかります。./script.sh ./bla/bla/bla/

ベストアンサー1

で始まるとします/some/dir

mkdir -p ./bla/bla/cloud/          # create /some/dir/bla/bla/cloud
cd ./release/                      # cd /some/dir/release
cp -rf ./html/ ./bla/bla/cloud/    # copy to /some/dir/release/bla/bla/cloud

定義に従って現在のディレクトリを変更すると、相対パスも変更されます。

おすすめ記事