私はスクリプトが初めてです。サーバーからファイルをダウンロードし、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"