bash スクリプト - 2 つの文字列を連結しようとしていますが、失敗します

bash スクリプト - 2 つの文字列を連結しようとしていますが、失敗します

現在のフォルダー名を取得し、その末尾に接尾辞 _default を追加するスクリプトを作成したいと思います。

これまでの私のスクリプトは次のようになります。

#!/usr/bin/env bash
baseDir=pwd | awk -F/ '{print $NF}'
networkName=$(baseDir)$('_default')

echo $networkName

これを実行すると、次のエラーが発生します。

codebrews@mymachine:/docker-local$ ./test.sh
./test.sh: line 3: baseDir: command not found
./test.sh: line 3: _default: command not found

きっと何か単純な間違いをしているのでしょうが、それがわかりません。ありがとうございます。

編集1

これも試してみました:

#!/usr/bin/env bash
baseDir=pwd | awk -F/ '{print $NF}'
networkName=$($baseDir)_default
echo $networkName

しかし、それはただ戻ってくる

_デフォルト

問題は basedDir が空白であることがわかりました。コマンド ラインで "pwd | awk -F/ '{print $NF}'" を実行すると機能します。しかし、このスクリプト ファイルでは明らかに機能していません。

答え1

baseDir=pwd | awk -F/ '{print $NF}'

このコマンドは、変数をbaseDir文字列 に割り当てpwd、その割り当ての出力 (つまり何も出力しない) を にパイプしますがawk、何も実行しません。

networkName=$(baseDir)$('_default')

networkNameこのコマンドは、コマンドの出力baseDir(存在しないため、最初のエラー) とコマンドの出力'_default')(存在しないため、2 番目のエラー)を連結して、変数を割り当てようとします。

echo $networkName

前のコマンドが機能しなかったため、終了の改行以外は何も出力されません。

あなたが探しているのはこれだと思います:

#!/usr/bin/env bash
baseDir="$(pwd | awk -F/ '{print $NF}')"
networkName="${baseDir}_default"

echo "$networkName"

関連情報