如何将参数发送到 "sed" 的脚本?
how to send parameter to script for "sed"?
我在脚本中使用 "sed -i 's/original/new/g' $gg" 但是在终端时,当我写 ./test echo print 时使用参数,然后出现错误:
sed : no input files
这是我的尝试:
文件名:测试
#!/bin/bash
sed -i 's/$original/$new/g' $gg
和gg文件:
#!/bin/bash
ns="ns1.cyberciti.biz ns2.cyberciti.biz ns3.cyberciti.biz"
OIFS="$IFS"
IFS=' '
read -a dnsservers <<< "${ns}"
IFS="$OIFS"
echo ${dnsservers[1]}
当gg为文件名时,不要使用$gg而是gg。
当文件名存储在 var gg 中并导出 var 时,使用
进行测试
echo "File gg=${gg}"
在你的 sed 命令之前。
当您添加行 set -x
时,您会看到变量 original 和 new 没有被替换。这是由单引号引起的,您必须结束单引号,用双引号给 var 并再次以单引号开头。此方法适用于两个变量。
sed 行将变为
sed -i 's/'"$original"'/'"$new"'/g' gg
可选,您可以在变量周围放置大括号:
sed -i 's/'"${original}"'/'"${new}"'/g' gg
我在脚本中使用 "sed -i 's/original/new/g' $gg" 但是在终端时,当我写 ./test echo print 时使用参数,然后出现错误:
sed : no input files
这是我的尝试:
文件名:测试
#!/bin/bash
sed -i 's/$original/$new/g' $gg
和gg文件:
#!/bin/bash
ns="ns1.cyberciti.biz ns2.cyberciti.biz ns3.cyberciti.biz"
OIFS="$IFS"
IFS=' '
read -a dnsservers <<< "${ns}"
IFS="$OIFS"
echo ${dnsservers[1]}
当gg为文件名时,不要使用$gg而是gg。 当文件名存储在 var gg 中并导出 var 时,使用
进行测试echo "File gg=${gg}"
在你的 sed 命令之前。
当您添加行 set -x
时,您会看到变量 original 和 new 没有被替换。这是由单引号引起的,您必须结束单引号,用双引号给 var 并再次以单引号开头。此方法适用于两个变量。
sed 行将变为
sed -i 's/'"$original"'/'"$new"'/g' gg
可选,您可以在变量周围放置大括号:
sed -i 's/'"${original}"'/'"${new}"'/g' gg