[解決済み] bashスクリプトで「cd `echo $0 | sed 's/(.***)\/.*/**1/'` 」はどうするのですか?
2022-02-14 15:49:35
質問
を理解しようとしています。 量子エスプレッソの例で書かれたスクリプトです。 . その中に、こんな式がありました。
# run from directory where this script is
cd `echo $0 | sed 's/\(.*\)\/.*/\1/'` # extract pathname
しかし
s/\(.*\)\/.*/\1/
を意味します。
どのように解決するのですか?
echo $0 | sed 's/\(.*\)\/.*/\1/'
スクリプトが実行されているフォルダを取得します。
たとえば、次のようなスクリプトを実行している場合
/home/mike/test.sh
を実行すると
/home/mike/
で、コマンド全体がそのディレクトリに変更されます。
これを試してみてください
echo this is where we started
pwd
cd `echo $0 | sed 's/\(.*\)\/.*/\1/'` # extract pathname
echo now we are here
pwd
そして、スクリプトがあるディレクトリとは別のディレクトリからスクリプトを実行します。
----質問に答えてください ----
sed 's/\(.*\)\/.*/\1/'
はパスの最後の部分を削除します。
これを試す
echo this/is/a/test | sed 's/\(.*\)\/.*/\1/'
echo this/is/a/test/ | sed 's/\(.*\)\/.*/\1/'
echo this/is/a/test.sh | sed 's/\(.*\)\/.*/\1/'
で、それ以降は
echo $0
はファイル(現在のスクリプト)を与えるはずなので、式全体はそのスクリプトが保存されているフォルダを与えるはずです。
の動作については、同じ質問に対するこの回答を参照してください。 https://stackoverflow.com/a/50148667/5203563
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン