複数行のBashコードを含むファイルを自分のGitHubアカウントにホスト.md
し、その行をコピーして貼り付けて、1つずつ実行して、ソフトウェア(Webサイトモジュール)を意図的に非自動にアップグレードしようとしています
。 Webサイトのディレクトリ、私の場合、ディレクトリは次の場所にあります。
$HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2
。
私はGitHubに実際のパスを投稿したくないので、対話する方法を探しています。尋ねるユーザー(現在は私だけですが、今後はそうではないかもしれません)ターミナルから直接、そのようなパスについて。
私の共有ホスティング環境では、SSHのユーザー名は非常に長くてランダムなので、jktantttopppazqqqddd
毎回端末でこれを覚えたりコピーしたりすることは非効率的ですが、残りのパスは覚えやすいです。それが私が望む理由です。早く直接変数に展開し、"${HOME}"
残りのパスとともに変数に保存します。 Bashコード行をコピーして貼り付けて実行する直前に(このような変数を使用します)。
私は似たようなものを使用し、変数拡張がread website_dir
どこにあるか上記のパスを提供しようとしましたが、結果はありませんでした。${HOME}
"${HOME}"/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2
読み取りで変数を拡張できません。。
私は私がしたいことを次のように定義します。端末からファイル内のコマンドを1つずつコピーして貼り付け、実行する前に使用するパスを効果的に生成します。私はこれを達成するための最も効率的な方法を探しています。これには、長くランダムに生成されたユーザー名を印刷する自動化が含まれている必要があります(たとえば、端末や他の場所からコピーして貼り付けることなくecho $HOME
)。
ユーザー名でパスが自動的に生成される問題を解決するには?
修正する
これは私にとって効果的です。
home_dir=$(echo $HOME) &&
read website_dir_relative_path_after_home_dir &&
website_dir="${home_dir}${website_dir_relative_path_after_home_dir}" # Note the lack of spacing between the two ${}${};
これをどのように行うかを共有してください。
答え1
$HOME
変数です。新しいものは必要ありません。したがって、ターゲットディレクトリがであることがわかっている場合、$HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2
スクリプトに必要なのは次のとおりです。
full_path="$HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2"
たとえば、次のスクリプトを考えてみましょう。
#!/bin/bash
full_path="$HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2"
echo "Path is: $full_path"
ランニングは以下を提供します:
$ foo.sh
Path is: /home/terdon/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2
ご覧のとおり、尋ねる必要はありません。$HOME
デフォルトでは、スクリプトですでに使用できます。
ユーザー入力が本当に必要な場合は、メッセージを表示しないでください!これはエラーが発生しやすく、ユーザーを迷惑にします。コマンドラインからインポートしてください。
full_path="$1"
## rest of the script
その後、を使用してスクリプトを呼び出すことができ、スクリプトの変数scriptName.sh $HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2
はに設定されます。$full_path
$HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2
最後に、〜しなければならない想像できないあいまいな理由で、ユーザーに相対パスを求めるメッセージを表示できます。たとえば、
echo 'Please enter the relative path to the target directory.'
read -p "the path you enter will be assumed to be relative to $HOME: " full_path
echo "You entered: $full_path, moving there now"
cd "$full_path"
echo "We are currently in $PWD"
ランニングは以下を提供します:
$ foo.sh
Please enter the relative path to the target directory.
the path you enter will be assumed to be relative to /home/terdon: foo
You entered: foo, moving there now
We are currently in /home/terdon/foo