我一直试图找出一种方法来将特定的bash参数替换为同一列表中的另一个参数。例如,如果我有类似的东西:
/home/text.c /bin/mv {} ~/.trash
我想用我拥有的文件替换{},在本例中为text.c
到目前为止,我有这个:
sed -i 's/{}/"$1"/g' "$@"
我的假设是它会查看参数(“$ @”),查找{}并将其替换为第一个参数(/home/text.c)。但是,我只会回来:
sed: -e expression #1, char 2: extra characters after command
/bin/mv: cannot stat '{}': No such file or directory
非常感谢任何帮助。
答案 0 :(得分:1)
您可以在$*
上使用BASH字符串替换,这是您所有参数的字符串形式:
local args="$*"
echo "${args/\{\}/$1}"