簡體   English   中英

用變量替換包含美元符號的 bash 腳本中的字符串

[英]Replace string in bash script that contains dollar sign with a variable

我有一個 bash 腳本,它讀取包含字符串的文件,我想在執行命令之前進行一些變量替換。 這幾乎就是 bash 本身所做的。 用戶將向腳本提供一個替換數組 arguments。 這看起來很簡單,但我無法在從文件中讀取的字符串中替換 $。 假設正在從文件中讀取 STR,並且將 ARGS 輸入到腳本中:

#!/bin/bash
ARGS=(what string)
STR='This is ${1} my input ${2} string looks like. ${1}?'

v=1
for s in "${ARGS[@]}"
do
   #STR=`echo $STR | sed "s/'$'{$v}/$s/g"` #using this replaces nothing in STR
   STR=`echo $STR | sed "s/{$v}/$s/g"   #using this replaces the {number} correctly but leaves the $
   v=$((v+1))
done
echo $STR
# eval $STR

運行上面的代碼,給出: 這是我輸入的 $string 字符串的樣子。 $什么? 但我希望 $ 在最終的 STR 中不存在。

#!/bin/bash
ARGS=(what string)
STR='This is ${1} my input ${2} string looks like. ${1}?'

v=1
for s in "${ARGS[@]}"
do
   STR=`echo $STR | sed "s/\\${$v}/$s/g"`
   v=$((v+1))
done
echo $STR

這給了我這個 output,如果我理解正確的話,這就是你想要的。

This is what my input string string looks like. what?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM