ファイルパスをリンクできません。権限が拒否されました。

ファイルパスをリンクできません。権限が拒否されました。

ファイルを開かずに一部のファイルパスをリンクしようとすると、「権限が拒否されました」というメッセージが表示される理由を理解できません。

#!/bin/bash

if [ "$#" -eq 1 ]; then
        path1= "./src/$1"
        path2= "./Main/$1"
        echo $path1
else
        echo "Invalid number of parameters"
fi

これがbashスクリプト(比較.sh)を実行する方法です:

ここに画像の説明を入力してください。

ポリスチレン./src/GraphicTest.cpp./Main/GraphicTest.cpp既存のファイルです。

答え1

シェル変数は構文を使用して設定されますname=value。宣言には「引用符で囲まれていない」空白文字を含めないでください。

    path1="./src/$1"
    path2="./Main/$1"
    #     ^ remove space here

name=valueあなたの使い方スペースは、個々のプログラム呼び出しの環境変数を一時的に設定する別の使い方を呼び出しています。

たとえば、

# set environment variable "foo" to "bar" for this invocation of "program"
foo="bar" /path/to/program
# set "baz" to an empty value for the invocation of "program"
baz= /path/to/program

許可拒否エラーが発生する理由path1= "./src/$1"は、「環境変数 path1 を null に設定してプログラム ./src/$1 を呼び出す」と表示され、./src/$1実行可能ビットが設定されていないため失敗するためです。

関連情報