line 1: echo: command not found

时间:2021-03-19 01:45:37
在Linux中新建test.sh,然后在里面如下如下:
echo 'qqqq'
echo 'wwww'

执行脚本后 sh test.sh  结果如下两行,
test.sh: line 1: echo: command not found
wwww

发现echo第一行都执行报错 不知道大拿们有没有遇到此问题,谢谢大家;

17 个解决方案

#1


#! /bin/bash  第一行

#2


“#! /bin/bash  第一行” 什么意思? 谢谢

#3


引用 2 楼 careers1111 的回复:
“#! /bin/bash  第一行” 什么意思? 谢谢


#! 表示用哪个程序来解释该文件的内容,一般写在第一行

shell脚本,第一行写 #!/bin/sh或者#!/bin/bash等,
类似的还有perl脚本用#!/bin/perl等

#4


你是用sh test.sh来执行的,照理说第一行的加不加就没有意义了,因为你已经指定了用sh来执行。

你加上那句之后就可以了吗?

#5


如果你的test.sh是从windows系统里面复制到linux里面的,执行这个命令先:
dos2unix test.sh

#6


引用 5 楼 ljc007 的回复:
如果你的test.sh是从windows系统里面复制到linux里面的,执行这个命令先:
dos2unix test.sh


大师您好,执行后不行,请看如下,谢谢
[weblogic@shengchan scripts]$ dos2unix test.sh
-bash: dos2unix: command not found

#7


引用 2 楼 careers1111 的回复:
“#! /bin/bash  第一行” 什么意思? 谢谢
 加上这个还不行吗 如果还不行,怀疑你的环境变量中间PATH部分没有引那些bin路径了。4楼讲的用sh执行不用加这个,还不大明白 公司Linux服务器今天连不上 郁闷 

#8


引用 6 楼 careers1111 的回复:
Quote: 引用 5 楼 ljc007 的回复:

如果你的test.sh是从windows系统里面复制到linux里面的,执行这个命令先:
dos2unix test.sh


大师您好,执行后不行,请看如下,谢谢
[weblogic@shengchan scripts]$ dos2unix test.sh
-bash: dos2unix: command not found



你这个又变成一个新的错误了。
你的pc上没有dos2unix这个命令,需要安装这个命令。
对于Ubuntu 10.04和更高版本,dos2unix命令已经由fromdos命令代替

#9


你可以先这样试试:


echo "echo 'qqqq'" > test_new.sh
echo "echo 'wwww'" >> test_new.sh
sh test_new.sh

#10


引用 9 楼 lisa5001 的回复:
你可以先这样试试:


echo "echo 'qqqq'" > test_new.sh
echo "echo 'wwww'" >> test_new.sh
sh test_new.sh
  大人真神人也!

#11


引用 9 楼 lisa5001 的回复:
你可以先这样试试:


echo "echo 'qqqq'" > test_new.sh
echo "echo 'wwww'" >> test_new.sh
sh test_new.sh
  line 1: echo: command not found 大牛能讲下其中原理么 跟直接vi输入的有什么区别 

#12


引用 11 楼 magi1201 的回复:
Quote: 引用 9 楼 lisa5001 的回复:

你可以先这样试试:


echo "echo 'qqqq'" > test_new.sh
echo "echo 'wwww'" >> test_new.sh
sh test_new.sh
  line 1: echo: command not found 大牛能讲下其中原理么 跟直接vi输入的有什么区别 


如果你是在vi里面一个字母一个字母输入的,应该也没问题。
可能你是用复制粘贴的,就可能引入“换行”符导致的问题

我在网上搜索了一下,你可以看看这个网页http://blog.163.com/chenglian_999@126/blog/static/760002792010730104951277/

#13


不是重定向吗

#14


引用 13 楼 Cecil_911 的回复:
不是重定向吗


嗯,用重定向的方法来验证是否是由CRLF导致的问题。
楼主的环境里面没有dos2unix的命令,相对于安装一个dos2unix然后再去验证的方案,这种用重定向去验证的方案更容易进行。

#15


引用 14 楼 lisa5001 的回复:
Quote: 引用 13 楼 Cecil_911 的回复:

不是重定向吗


嗯,用重定向的方法来验证是否是由CRLF导致的问题。
楼主的环境里面没有dos2unix的命令,相对于安装一个dos2unix然后再去验证的方案,这种用重定向去验证的方案更容易进行。

用cat -A可以看吗

#16


引用 15 楼 Cecil_911 的回复:
Quote: 引用 14 楼 lisa5001 的回复:

Quote: 引用 13 楼 Cecil_911 的回复:

不是重定向吗


嗯,用重定向的方法来验证是否是由CRLF导致的问题。
楼主的环境里面没有dos2unix的命令,相对于安装一个dos2unix然后再去验证的方案,这种用重定向去验证的方案更容易进行。

用cat -A可以看吗

可以


$] todos test_new.sh
$] cat -A test_new.sh
echo 'qqqq'^M$
echo 'wwww'^M$
$] fromdos test_new.sh
$] cat -A test_new.sh
echo 'qqqq'$
echo 'wwww'$

#17


vi打开,:set fileformat=unix,和dos2unix一个意思

#1


#! /bin/bash  第一行

#2


“#! /bin/bash  第一行” 什么意思? 谢谢

#3


引用 2 楼 careers1111 的回复:
“#! /bin/bash  第一行” 什么意思? 谢谢


#! 表示用哪个程序来解释该文件的内容,一般写在第一行

shell脚本,第一行写 #!/bin/sh或者#!/bin/bash等,
类似的还有perl脚本用#!/bin/perl等

#4


你是用sh test.sh来执行的,照理说第一行的加不加就没有意义了,因为你已经指定了用sh来执行。

你加上那句之后就可以了吗?

#5


如果你的test.sh是从windows系统里面复制到linux里面的,执行这个命令先:
dos2unix test.sh

#6


引用 5 楼 ljc007 的回复:
如果你的test.sh是从windows系统里面复制到linux里面的,执行这个命令先:
dos2unix test.sh


大师您好,执行后不行,请看如下,谢谢
[weblogic@shengchan scripts]$ dos2unix test.sh
-bash: dos2unix: command not found

#7


引用 2 楼 careers1111 的回复:
“#! /bin/bash  第一行” 什么意思? 谢谢
 加上这个还不行吗 如果还不行,怀疑你的环境变量中间PATH部分没有引那些bin路径了。4楼讲的用sh执行不用加这个,还不大明白 公司Linux服务器今天连不上 郁闷 

#8


引用 6 楼 careers1111 的回复:
Quote: 引用 5 楼 ljc007 的回复:

如果你的test.sh是从windows系统里面复制到linux里面的,执行这个命令先:
dos2unix test.sh


大师您好,执行后不行,请看如下,谢谢
[weblogic@shengchan scripts]$ dos2unix test.sh
-bash: dos2unix: command not found



你这个又变成一个新的错误了。
你的pc上没有dos2unix这个命令,需要安装这个命令。
对于Ubuntu 10.04和更高版本,dos2unix命令已经由fromdos命令代替

#9


你可以先这样试试:


echo "echo 'qqqq'" > test_new.sh
echo "echo 'wwww'" >> test_new.sh
sh test_new.sh

#10


引用 9 楼 lisa5001 的回复:
你可以先这样试试:


echo "echo 'qqqq'" > test_new.sh
echo "echo 'wwww'" >> test_new.sh
sh test_new.sh
  大人真神人也!

#11


引用 9 楼 lisa5001 的回复:
你可以先这样试试:


echo "echo 'qqqq'" > test_new.sh
echo "echo 'wwww'" >> test_new.sh
sh test_new.sh
  line 1: echo: command not found 大牛能讲下其中原理么 跟直接vi输入的有什么区别 

#12


引用 11 楼 magi1201 的回复:
Quote: 引用 9 楼 lisa5001 的回复:

你可以先这样试试:


echo "echo 'qqqq'" > test_new.sh
echo "echo 'wwww'" >> test_new.sh
sh test_new.sh
  line 1: echo: command not found 大牛能讲下其中原理么 跟直接vi输入的有什么区别 


如果你是在vi里面一个字母一个字母输入的,应该也没问题。
可能你是用复制粘贴的,就可能引入“换行”符导致的问题

我在网上搜索了一下,你可以看看这个网页http://blog.163.com/chenglian_999@126/blog/static/760002792010730104951277/

#13


不是重定向吗

#14


引用 13 楼 Cecil_911 的回复:
不是重定向吗


嗯,用重定向的方法来验证是否是由CRLF导致的问题。
楼主的环境里面没有dos2unix的命令,相对于安装一个dos2unix然后再去验证的方案,这种用重定向去验证的方案更容易进行。

#15


引用 14 楼 lisa5001 的回复:
Quote: 引用 13 楼 Cecil_911 的回复:

不是重定向吗


嗯,用重定向的方法来验证是否是由CRLF导致的问题。
楼主的环境里面没有dos2unix的命令,相对于安装一个dos2unix然后再去验证的方案,这种用重定向去验证的方案更容易进行。

用cat -A可以看吗

#16


引用 15 楼 Cecil_911 的回复:
Quote: 引用 14 楼 lisa5001 的回复:

Quote: 引用 13 楼 Cecil_911 的回复:

不是重定向吗


嗯,用重定向的方法来验证是否是由CRLF导致的问题。
楼主的环境里面没有dos2unix的命令,相对于安装一个dos2unix然后再去验证的方案,这种用重定向去验证的方案更容易进行。

用cat -A可以看吗

可以


$] todos test_new.sh
$] cat -A test_new.sh
echo 'qqqq'^M$
echo 'wwww'^M$
$] fromdos test_new.sh
$] cat -A test_new.sh
echo 'qqqq'$
echo 'wwww'$

#17


vi打开,:set fileformat=unix,和dos2unix一个意思