Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为什么sudo-s';printf";"';不能处理换行?_Bash_Shell_Newline - Fatal编程技术网

Bash 为什么sudo-s';printf";"';不能处理换行?

Bash 为什么sudo-s';printf";"';不能处理换行?,bash,shell,newline,Bash,Shell,Newline,直接调用以下命令时,可以正确打印换行符 printf "abc def" 但是当用sudo-s调用它时,新行被忽略了 sudo -s "printf 'abc def'" $SHELL正在使用bash 似乎是sudo删除换行符。如果尝试在新的bash实例中运行相同的命令,换行符仍然存在: bash -c "printf 'abc def'" 是的,但是当您使用“\n”或“\r\n”时,sudo-s也可以正确打印它,按enter键与“\n”有什么不同?虽然在unix中,如果使用\n,则按en

直接调用以下命令时,可以正确打印换行符

printf "abc
def"
但是当用sudo-s调用它时,新行被忽略了

sudo -s "printf 'abc
def'"

$SHELL正在使用bash

似乎是
sudo
删除换行符。如果尝试在新的bash实例中运行相同的命令,换行符仍然存在:

bash -c "printf 'abc
def'"

是的,但是当您使用“\n”或“\r\n”时,sudo-s也可以正确打印它,按enter键与“\n”有什么不同?虽然在unix中,如果使用
\n
,则按enter键与“\n”相同,sudo将看到两个字符,
,这将在以后被
printf
解释为换行符。但是如果在字符串中放入换行符,sudo会将其视为换行符,并将其删除。