現在のフォルダー名を取得し、その末尾に接尾辞 _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"