我正在尝试删除包含字符串传递参数的行,但我无法使其工作。我在OSX 10.9上。
sed -i '' '/$2/d' /etc/hosts
不应该这样吗?它只保留文件。没有什么变化。我的命令是sudo hosts remove junior.dev
。
这是我的shell脚本:
#!/bin/sh
let $# || { echo No arguments supplied. Example: hosts add 192.168.2.2 mysite.dev; exit 1; }
if [ $1 = "add" ]; then
if [ -z "$2" ] || [ -z "$3" ]; then
echo "You must supply an IP address and a host name."
exit 1;
else
echo "$2\t$3" >> /etc/hosts
echo "Done."
fi
fi
if [ $1 = "remove" ]; then
if [ -z "$2" ]; then
echo "You must supply a host name."
exit 1;
else
sed -i '' '/$2/d' /etc/hosts
echo "Done."
fi
fi
答案 0 :(得分:2)
使用双引号"
:
$ echo "$foo"
> bar
$ echo '$foo'
> $foo
使用双引号"
时,变量会被展开,当使用单引号'
时,它们不会展开。