Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
554 views
in Technique[技术] by (71.8m points)

macos - "echo -n" works fine when executing script with bash, but not with sh

How come sh UsersInput.sh gives a different output compared to bash UsersInput.sh?

My script is below:

#!/bin/bash
echo -n "Enter: ";
read usersinput;
echo "You entered, "$usersinput""; 

bash

localhost:Bash henry$ bash UsersInput.sh 
Enter: input
You entered, "input"

sh

localhost:Bash henry$ sh UsersInput.sh
-n Enter: 
input
You entered, "input"

How come -n behaves properly with the first, but not with the second? What's the reason for this and is there a workaround?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

From man echo:

Some shells may provide a builtin echo command which is similar or identical to this utility. Most notably, the builtin echo in sh(1) does not accept the -n option. Consult the builtin(1) manual page.

In bash, the Bourne-again shell, echo accepts the -n option whereas in sh, the Bourne shell, echo does not, so it simply echos everything you wrote, including the -n.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...