为什么在使用命令 sudo su -c "sed -n -e '$p' a.txt" 时无法获得任何输出
Why could not get any output when use command sudo su -c "sed -n -e '$p' a.txt"
在Centos 6.7中Linux,我运行可以得到一行输出:
sed -n -e '$p' a.txt
但是如果我使用这个命令,它没有输出:
sudo su -c "sed -n -e '$p' a.txt"
在第一个命令中:sed -n -e '$p' a.txt
。 '$p'
,变量替换用单引号'$p'
引用,则包含它的字面意思,即字面意思$p
,不展开。
在第二个命令中:sudo su -c "sed -n -e '$p' a.txt"
。 $p
包含在双引号中,虽然它包含在单引号 ''
中,但单引号只是双引号中的字符。它对$p
的变量替换没有影响。所以变量替换会展开。
例如:
p="hello"
echo '$p' # print $p
echo "'$p'" # print 'hello'
在Centos 6.7中Linux,我运行可以得到一行输出:
sed -n -e '$p' a.txt
但是如果我使用这个命令,它没有输出:
sudo su -c "sed -n -e '$p' a.txt"
在第一个命令中:sed -n -e '$p' a.txt
。 '$p'
,变量替换用单引号'$p'
引用,则包含它的字面意思,即字面意思$p
,不展开。
在第二个命令中:sudo su -c "sed -n -e '$p' a.txt"
。 $p
包含在双引号中,虽然它包含在单引号 ''
中,但单引号只是双引号中的字符。它对$p
的变量替换没有影响。所以变量替换会展开。
例如:
p="hello"
echo '$p' # print $p
echo "'$p'" # print 'hello'