shell执行脚本,为什么会在本行输出,而不是另起一行?
时间: 2023-07-12 13:02:54 浏览: 45
在这个脚本中,使用了`\b`实现了退格操作,这会让每次输出的字符覆盖上一次输出的字符。因此,输出的数字会在同一行上显示,而不是另起一行。具体来说,`\b`会将光标移回到当前行的开头,然后输出当前数字,这样就实现了覆盖上一次输出的效果。所以,在执行脚本时,每秒输出的数字会在同一行上不断被覆盖和更新,直到输出数字 0,整个脚本才会结束。
相关问题
shell执行脚本,为什么会在执行命令的本行做输出?
在 Shell 中,每当执行一条命令时,Shell 会开启一个子进程来执行该命令。子进程会有自己的标准输入、标准输出和标准错误输出。当子进程输出内容时,它会向标准输出中写入内容,这些内容会被 Shell 程序捕获并显示在终端上。
如果一个命令的输出没有被重定向到其他文件或管道中,那么它的输出就会默认输出到终端上。输出到终端上的内容会显示在当前光标所在的行上,而不是另起一行。这就是为什么执行脚本时,在执行命令的本行进行输出的原因。
在 shell 脚本中执行另一个shell脚本,这个脚本不会输出打印消息
回答: 在Shell脚本中执行另一个Shell脚本时,如果你希望被调用的脚本不输出打印消息,你可以使用exec命令来调用。exec与fork不同,不需要新开一个子Shell来执行被调用的脚本,而是在同一个Shell内执行。但是需要注意的是,使用exec调用一个新脚本后,父脚本中exec行之后的内容将不会再执行。这是exec和source的区别。\[2\]所以,如果你希望被调用的脚本不输出打印消息,可以使用exec来调用它。
#### 引用[.reference_title]
- *1* *2* *3* [SHELL【1】-在 Shell 脚本中调用另一个 Shell 脚本的三种方式](https://blog.csdn.net/m0_46535940/article/details/124959568)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]