Linux 명령에서 사용자 정의 변수 이름을 사용하는 방법은 무엇입니까?

Linux 명령에서 사용자 정의 변수 이름을 사용하는 방법은 무엇입니까?

저는 스크립팅이 처음입니다. 서버에서 파일을 다운로드하고 Linux의 날짜/시간을 사용하여 동적으로 정의된 디렉터리에 저장하는 스크립트를 작성해야 합니다.

이게 그 모습이야

dir_path="/Users/me/Downloads/stuff/data_vm/"  
pem_path="/Users/me/Downloads/mypem"

이제 디렉토리 이름을 정의합니다.

dir_name="backup_$(date +%Y-%m-%d_%H:%M:%S)"

그런 다음 연결 dir_path하고dir_name

final_path="${dir_path}${dir_name}"

이제 이 경로에 디렉터리를 만듭니다.

mkdir "${final_path}"

이제 명령에서 위에 정의된 변수를 사용하는 데 문제가 있습니다 scp. 이게 내가 한 일이야

scp -i "${pem_path}"  -r [email protected]:/home/ec2-user/stats/dom/files/  "$(final_path)"

디렉토리를 생성할 수 있지만 command not found명령이 포함된 줄이 표시됩니다 scp.

내가 뭘 잘못했나요?

답변1

오타가 있습니다: "$(final_path)"should be "$final_path"(또는 "${final_path}"중괄호를 선호하는 경우).

를 사용하면 "$(final_path)"쉘은 이를 final_path명령 대체에서 실행되는 명령으로 처리합니다(명령의 출력을 문자열로 대체합니다. date이전에 사용할 수 있습니다). 양식에 오류가 표시될 수 있습니다.

sh: final_path: command not found

또한 ${variable}구문은 오직 true입니다.필요한문자열 내에서 확장을 사용하려면 또는 에서 $variable와 같이 변수 이름의 유효한 문자와 문자열을 연결하십시오 . 다른 모든 경우에는 사용하면 충분 하지만 이는 개인 습관에 따라 달라질 수 있습니다."${variable}_""${variable}hello""$variable"

관련 정보