Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 如何编写sh脚本?_Unix_Sh - Fatal编程技术网

Unix 如何编写sh脚本?

Unix 如何编写sh脚本?,unix,sh,Unix,Sh,我希望在这里使用正确的术语,但我想编写一个在unix中执行的脚本,它将按顺序(即一个接一个)执行许多命令。我可以把我想要的命令放在记事本中,用换行符分隔,然后保存为script.sh,然后执行吗 sh script.sh 您需要在顶部安装一个 #/bin/sh您需要确保为脚本文件设置了执行位。此外,您还可以指定用于运行脚本的应用程序。默认情况下,如果不指定应用程序,它将默认使用正在执行脚本的当前shell。我通常把应用程序具体如下 #!/bin/bash 这将指定应使用bash来处理脚本。如

我希望在这里使用正确的术语,但我想编写一个在unix中执行的脚本,它将按顺序(即一个接一个)执行许多命令。我可以把我想要的命令放在记事本中,用换行符分隔,然后保存为script.sh,然后执行吗

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