我先在window环境创建了一个hello.sh的脚本,然后加入代码:
#!/bin/bash
echo "hello world!"
在linux下编译的时候出现了
xx@xx:/xx/xx/xx/test$ ./hello.sh
-bash: ./hello.sh: /bin/bash^M: 解释器错误: 没有那个文件或目录
然后百度查了下,发现这是由于脚本文件在保存时使用了DOS文件格式造成的,所以在linux下先创建脚本编辑就没问题了。
xx@xx:/xx/xx/xx/test$ vim hello.sh
1 #!/bin/bash
2 echo "hello world"
然后保存,退出vim
xx@xx:/xx/xx/xx/test$ ./hello.sh
-bash: ./hello.sh: 权限不够
xx@xx:/xx/xx/xx/test$ chmod 777 hello.sh
xx@xx:/xx/xx/xx/test$ ./hello.sh
hello world!
应该编辑完后,对hello.sh进行授权,然后运行。
#!
是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell;后面的/bin/bash
就是指明了解释器的具体位置。
echo 命令用于向标准输出文件(Standard Output,stdout,一般就是指显示器)输出文本。在.sh
文件中使用命令与在终端直接输入命令的效果是一样的。
现在改动一个稍微复杂的脚本
#!/bin/bash
echo "hello world!"
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"
运行脚本
./example
hello world!
What is your name?
继续输入字符
xintiaobao
Hello, xintiaobao
脚本中,read PERSON中表示从终端读取用户输入的数据,并赋值给 PERSON 变量。read 命令用来从标准输入文件(Standard Input,stdin,一般就是指键盘)读取用户输入的数据。 echo "Hello,