シェルスクリプトでは、変数のCDが機能しません。

シェルスクリプトでは、変数のCDが機能しません。

次の変数があります

$a=/opt
$b=var
$c=usr
$path=/$a/$b/$c/man

cd $path を実行すると、そのファイルやディレクトリがないことが示されます。

ただし、このパスは実際には/opt/var/usr/manにあります。どんな提案がありますか?

答え1

問題は変数を割り当てるときの構文エラーです。

$a=/opt
$b=var
$c=usr
$path=/$a/$b/$c/man

..変数の割り当ての前に$..が来ることができないため、動作しません。

次のように進む必要があります。

a=opt
b=var
c=usr
dir=/$a/$b/$c/man
cd $dir

名前は同じですが、状況が異なる2つの変数を使用すると混乱を招く可能性があるため、悪い考えなので最終変数の名前を変更しました。 (PATH非常に重要な環境変数です。)

答え2

これを試してみるとecho $a$b$cこれが得られます

[root@centseven ~]# echo $a$b$c
/optvarusr

だからこれは実行ではありません。

最後の変数は次のようになります。path=/$a$b$c/man

変数を次に変更します。

$a=/opt
$b=/var
$c=/usr

それでは試してみてくださいecho $path。私には効果がありました。

[root@centseven ~]# echo $path
/opt/var/usr/man

関連情報