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}構文は真です。必要文字列内で拡張を使用するには、または$variableのように変数名の有効な文字と文字列を連結します。他のすべての場合には十分ですが、これは個人的な習慣によって異なります。"${variable}_""${variable}hello""$variable"

おすすめ記事