これが私のコンテキストです: profile という名前のプロファイルがあります
# file: profile
MY_PATH = "/home/deng/default"
MY_NAME = "deng"
私のテストファイル:
#!/bin/sh
#file: test.sh
DJ_PATH="/deng/jian/doc"
OUTPUT_PATH="\"${DJ_PATH}/output\""
echo "OUTPUT_PATH = ${OUTPUT_PATH}"
DOC_KEY="MY_PATH"
DOC_VALUE=${OUTPUT_PATH}
echo "DOC_VALUE = ${DOC_VALUE}"
echo "sed 's:[ \t]*${DOC_KEY}[ \t]*=.*:${DOC_KEY} = ${DOC_VALUE}:' profile"
sed 's:[ \t]*${DOC_KEY}[ \t]*=.*:${DOC_KEY} = ${DOC_VALUE}:' profile
私が実行するターミナルで
$ ./test.sh
そして出力は
1 OUTPUT_PATH = "/deng/jian/doc/output"
2 DOC_VALUE = "/deng/jian/doc/output"
3 sed 's:[ \t]*MY_PATH[ \t]*=.*:MY_PATH = "/deng/jian/doc/output":' profile
4 MY_PATH = "/home/deng/default"
5 MY_NAME = "deng"
プロファイルのテキストが、設定したい DOC_VALUE ("/deng/jian/doc/output") に置き換えられていないようです。しかし、出力行 3 でコマンドを実行しました。
sed 's:[ \t]*MY_PATH[ \t]*=.*:MY_PATH = "/deng/jian/doc/output":' profile
出力:
MY_PATH = "/deng/jian/doc/output"
MY_NAME = "deng"
どうしたの?test.shに書いたコマンドと何が違うの?
sed 's:[ \t]*${DOC_KEY}[ \t]*=.*:${DOC_KEY} = ${DOC_VALUE}:' profile
そして私が直接入れたコマンド?
sed 's:[ \t]*MY_PATH[ \t]*=.*:MY_PATH = "/deng/jian/doc/output":' profile