ファイルを開かずに一部のファイルパスをリンクしようとすると、「権限が拒否されました」というメッセージが表示される理由を理解できません。
#!/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
実行可能ビットが設定されていないため失敗するためです。