パスに変数があるスクリプト

パスに変数があるスクリプト

この質問をどこに尋ねるのか、正しい言葉でどのように質問するのかわかりません。

これには、ユーザー(bukkit)用のゲーム(minecraft)サーバーを管理するためのスクリプトがあります。いくつかの変数を削除してこれがうまくいかない理由と考えられる解決策を知りたいです。

#!/bin/bash
# /etc/init.d/bukkit

USERNAME='bukkit'
MCROOT='/home/$USERNAME' 
MCPATH='/home/$USERNAME/Server'
BACKUPPATH='/home/$USERNAME/backups'
SCRIPTLOG='/home/$USERNAME/script.log'
LOGPATH='/home/$USERNAME/Server/logs'

(line 50) cd $MCPATH

(また、その後ろのパスに$ MCROOTを含めることが好きです。)

スクリプトを実行すると、次のようになります。

/bin/bukkit: line 50: cd: /home/$USERNAME/Server: No such file or directory
-su: line 0: cd: /home//Server: No such file or directory

要点は、異なるファイルに異なるユーザー名を持つことです。すべてのパスを編集する時間を節約し、通常は残りのコードのすべてを変数に置き換えることができると思いました。だから"ftb"という名前の他のファイルはUSERNAME='ftb'

"/bin/bukkit" is a symbolic link to "/etc/init.d/bukkit"

良い一日をお過ごしください!

ベストアンサー1

/home/$USERNAME/Server変数は一重引用符内で拡張されないため、システムは代わりにリテラルを検索します/home/bukkit/Server

二重引用符を使用すると、コードが機能します。

MCPATH="/home/$USERNAME/Server"

より詳細に議論された環境変数で一重引用符と二重引用符の意味は何ですか?

おすすめ記事