6

変数値を実行するbashの作り方。たとえば、次のコードでは、変数値が一重引用符 (!) で囲まれています。

#!/bin/bash
V_MY_PATH='$HOME'
echo "$V_MY_PATH"
ls $V_MY_PATH

出力は

$HOME
ls: $HOME: No such file or directory

シェル変数がある場合、その値に変換するように bash を作成する方法。

V_MY_PATH='$HOME' の後にいくつかのコードを追加して、echo $HOME のような出力を作成したいと考えています。

それは簡単なことですが、私は立ち往生しています。(注: V_MY_PATH="$HOME" を使用すると、正常に動作することがわかっています。)

編集部分:単純にしたかっただけですが、詳細が必要だと感じています。

ファイルからパラメータを取得しています。この部分はうまく機能します。書き直したくありません。問題は、V_MY_PATH に定義済みの変数 ($home など) が含まれている場合、その値のように扱われないことです。

4

4 に答える 4

10

一重引用符を削除します

V_MY_PATH='$HOME'

する必要があります

V_MY_PATH=$HOME

$HOME変数として使いたい

変数を一重引用符で囲むことはできません。

完全なスクリプト:

#!/bin/bash
V_MY_PATH=$HOME
echo "$V_MY_PATH" 
ls "$V_MY_PATH"  #; Add double quotes here in case you get weird filenames

出力:

/home/myuser
0
05430142.pdf
4
aiSearchFramework-7_10_2007-v0.1.rar

于 2013-01-28T12:02:36.950 に答える
8

変数の間接参照を使用して、次のようにします。

pete.mccabe@jackfrog$ p='HOME'
pete.mccabe@jackfrog$ echo $p
HOME
pete.mccabe@jackfrog$ ls ${p}
ls: cannot access HOME: No such file or directory
pete.mccabe@jackfrog$ ls ${!p}
bash                        libpng-1.2.44-1.el6      python-hwdata           squid
...
pete.mccabe@jackfrog$ 

${!p} は $p の値を取得することを意味し、その値は参照したい内容の変数の名前です

于 2013-01-28T12:02:41.270 に答える
1

evalコマンドを使用します。

#!/bin/bash

V_MY_PATH='$HOME'
echo "$V_MY_PATH"
eval ls $V_MY_PATH
于 2013-01-28T11:57:08.490 に答える