1. ホーム
  2. bash

[解決済み] bashで${var}パラメータ展開式を入れ子にできますか?

2023-06-16 18:37:23

質問

私の持っているものはこれです。

progname=${0%.*}
progname=${progname##*/}

これは1行にネストできる(できない)、つまり1つの式にできるのでしょうか?

スクリプト名からパスと拡張子を取り除き、ベース名だけを残そうとしています。上記の 2 行は問題なく動作します。私の「C」の性質は、単にこれらをさらに難読化するように私を駆り立てています。

どのように解決するのですか?

ネストとは、このようなものを指します。

#!/bin/bash

export HELLO="HELLO"
export HELLOWORLD="Hello, world!"

echo ${${HELLO}WORLD}

では、ネストすることはできません。 ${var} 式のネストはできません。bashのシンタックスエキスパンダーはそれを理解できません。

しかし、もし私があなたの問題を正しく理解しているなら、あなたは basename コマンドを使うことを検討してみてください - これは与えられたファイル名からパスを取り除き、もし拡張子が与えられていればそれも取り除きます。たとえば、次のように実行します。 basename /some/path/to/script.sh .sh を実行すると script .