Unix 如何编写sh脚本?
我希望在这里使用正确的术语,但我想编写一个在unix中执行的脚本,它将按顺序(即一个接一个)执行许多命令。我可以把我想要的命令放在记事本中,用换行符分隔,然后保存为script.sh,然后执行吗Unix 如何编写sh脚本?,unix,sh,Unix,Sh,我希望在这里使用正确的术语,但我想编写一个在unix中执行的脚本,它将按顺序(即一个接一个)执行许多命令。我可以把我想要的命令放在记事本中,用换行符分隔,然后保存为script.sh,然后执行吗 sh script.sh 您需要在顶部安装一个 #/bin/sh您需要确保为脚本文件设置了执行位。此外,您还可以指定用于运行脚本的应用程序。默认情况下,如果不指定应用程序,它将默认使用正在执行脚本的当前shell。我通常把应用程序具体如下 #!/bin/bash 这将指定应使用bash来处理脚本。如
sh script.sh
您需要在顶部安装一个
#/bin/sh
您需要确保为脚本文件设置了执行位。此外,您还可以指定用于运行脚本的应用程序。默认情况下,如果不指定应用程序,它将默认使用正在执行脚本的当前shell。我通常把应用程序具体如下
#!/bin/bash
这将指定应使用bash
来处理脚本。如果您使用任何特殊的脚本,您将希望具体,因为sh
、bash
、ksh
等之间存在差异
此外,由于您提到要按顺序运行多个命令,因此可能需要使用一些条件
一个简单的条件是在脚本中使用&&
或|
。这将允许您指定命令是否成功执行时发生的情况。例如
#!/bin/bash
command1 || exit
command2 || exit
command3
这将尝试执行command1或退出(如果不成功)(返回代码高于0)。否则,它将继续执行以下行
另一个例子使用了&
语法,意思是“和”
最后,您可能需要专门检查返回代码,并用错误消息进行响应
#!/bin/bash
command1
if [ $? -gt 0 ] ; then
echo "command1 failed with error code $?"
exit
fi
command2 ....
最后一个例子是更高级的shell脚本,但您可能需要进一步研究。如果您使用任何条件脚本,请始终记住添加shebang(#!/bin/bash)以获得适当的shell。我只在bash中测试了这一点,但您可以将每个命令放在自己的行中,不需要shebang或任何必要的东西。您必须使用chmod授予文件执行权限,然后才能使用chmod运行它
./myscript
(假设“myscript”在当前目录中)。谷歌关闭了吗?当我把这个问题输入搜索框时,我可以找到大量的答案……你的陈述是正确的,但这不是一个真正的问题。你说的“记事本”是指Windows文本编辑器吗?你在用Cygwin吗?如果是这样的话,请注意行尾;Cygwin上的sh和bash通常在Windows样式的线条端点上阻塞
mandos2unix
了解更多信息。如果要直接执行脚本,应以#开头/bin/sh
或#/bin/bash
;然后您可以只运行/script
,而不是sh./script
。如果没有shebang,它可能会由/bin/sh
执行,但是shebang是一个好主意,除非您总是打算显式地运行shell。
./myscript