-
建立文件:
第一行 #!/bin/bash 标识该 Shell 脚本由哪个 Shell 解释:
#!/bin/bash echo "Hello World!"
-
shell中的变量:
shell中的变量⑴常用系统变量 $ # :保存程序命令行参数的数目 $ ?:保存前一个命令的返回码 $ 0 :保存程序名 $ * :以("$1 $2...")的形式保存所有输入的命令行参数 $ @ :以("$1""$2"...)的形式保存所有输入的命令行参数 ⑵定义变量 shell语言是非类型的解释型语言,不象用C++/JAVA语言编程时需要事先声明变量.给一个变量赋值,实际上就是定义了变量. 在linux支持的所有shell中,都可以用赋值符号(=)为变量赋值. 如: abc=9 (bash/pdksh不能在等号两侧留下空格) set abc = 9 (tcsh/csh) 由于shell程序的变量是无类型的,所以用户可以使用同一个变量时而存放字符时而存放整数. 如: name=abc (bash/pdksh) set name = abc (tcsh) 在变量赋值之后,只需在变量前面加一个$去引用.如: echo $name ⑶位置变量 当运行一个支持多个命令行参数的shell程序时,这些变量的值将分别存放在位置变量里. 其中第一个参数存放在位置变量1,第二个参数存放在位置变量2,依次类推...,shell保留 这些变量,不允许用户以令外的方式定义他们.同别的变量,用$符号引用他们.
-
如何在 Linux 中运行一个 Shell 脚本
-
通过将文件作为参数传递给 shell 以运行 shell 脚本
第一种方法涉及将脚本文件的名称作为参数传递给 shell 。考虑到 bash 是默认 shell,你可以像这样运行一个脚本:
bash hello.sh
你知道这种方法的优点吗?你的脚本不需要执行权限。对于简单的任务非常方便快速。
如果你还不熟悉,我建议你 阅读我的 Linux 文件权限详细指南 。
记住,将其作为参数传递的需要是一个 shell 脚本。一个 shell 脚本是由命令组成的。如果你使用一个普通的文本文件,它将会抱怨错误的命令。
在这种方法中,你要明确地具体指定你想使用 bash 作为脚本的解释器 。
shell 只是一个程序,并且 bash 只是 Shell 的一种实现。还有其它的 shell 程序,像 ksh 、zsh 等等。如果你安装有其它的 shell ,你也可以使用它们来代替 bash 。
-
通过具体指定 shell 脚本的路径来执行脚本
另外一种运行一个 shell 脚本的方法是通过提供它的路径。但是要这样做之前,你的文件必须是可执行的。否则,当你尝试执行脚本时,你将会得到 “权限被拒绝” 的错误。因此,你首先需要确保你的脚本有可执行权限。你可以 使用 chmod 命令 来给予你自己脚本的这种权限,像这样:
chmod u+x script.sh
使你的脚本是可执行之后,你只需输入文件的名称及其绝对路径或相对路径。大多数情况下,你都在同一个目录中,因此你可以像这样使用它:
./script.sh
如果你与你的脚本不在同一个目录中,你可以具体指定脚本的绝对路径或相对路径
为什么当你在同一个目录下,却不能使用脚本名称?这是因为你的 Linux 系统会在 PATH 环境变量中指定的几个目录中查找可执行的文件来运行。这里是我的系统的 PATH 环境变量的值:
abhishek@itsfoss:~$ echo $PATH /home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
这意味着在下面目录中具有可执行权限的任意文件都可以在系统的任何位置运行:
/home/abhishek/.local/bin/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin/usr/games/usr/local/games/snap/bin
Linux 命令(像 ls、cat 等)的二进制文件或可执行文件都位于这些目录中的其中一个。这就是为什么你可以在你系统的任何位置通过使用命令的名称来运作这些命令的原因。看看,ls 命令就是位于 /usr/bin 目录中。
-
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 分享4款.NET开源、免费、实用的商城系统
2021-10-30 260. 只出现一次的数字 III