Jer*_*wen 3 variables bash shell
当你执行
jeremy@home:/$DOG=happy; echo $DOG;
Run Code Online (Sandbox Code Playgroud)
你得到了输出
happy
Run Code Online (Sandbox Code Playgroud)
但是,当你执行jeremy @ home时:/ $ sh -c"DOG = happy; echo $ DOG;"
甚至
jeremy@home:/$sh -c "DOG=happy; echo "$DOG";"
Run Code Online (Sandbox Code Playgroud)
要么
jeremy@home:/$sh -c "DOG=happy; echo \"$DOG\";"
Run Code Online (Sandbox Code Playgroud)
要么
jeremy@home:/$sh -c "DOG=happy; echo '$DOG';"
Run Code Online (Sandbox Code Playgroud)
你只得到一个空白行.这是怎么回事?如何从sh -c命令中实际设置变量?
逃离美元符号(\$).
> sh -c "DOG=happy; echo \$DOG;"
happy
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用单引号而不是双引号 - 变量不在单引号内进行求值,因此$DOG将传递给它sh进行评估.
> sh -c 'DOG=happy; echo $DOG'
happy
Run Code Online (Sandbox Code Playgroud)
但是,如果你需要在传递之前替换变量sh,并且还要传递某些变量,那么通常最容易逃避你想要传递的变量.
好的命令是:
sh -c 'DOG=happy; echo $DOG;'
Run Code Online (Sandbox Code Playgroud)
或者你可以逃脱'$'标志
sh -c "DOG=happy; echo \$DOG;"
Run Code Online (Sandbox Code Playgroud)