shell 命令
Shell 环境
Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,常见的有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
本教程关注的是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。
在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash
#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。
脚本解释器
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
#!/bin/bashecho "Hello World !"
运行 Shell 脚本有两种方法:
作为可执行程序
chmod +x ./test.sh #使脚本具有执行权限./test.sh #执行脚本
作为解释器参数
这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:
/bin/sh test.sh/bin/php test.php
Shell 变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
your_name="runoob"
注意:变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。 正确示例:
WEBSITE_DOMAIN="www.chatgpt-use.com"LD_LIBRARY_PATH="/bin/"_var="123"var2="abc"
无效的变量命名:
# 避免使用if作为变量名if="some_value"# 避免使用 $ 等特殊符号variable_with_$=42?var=123user*name=runoob# 避免空格variable with space="value"
使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
your_name="qinjx"echo $your_nameecho ${your_name}//变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
已定义的变量,可以被重新定义
your_name="tom"echo $your_nameyour_name="alibaba"echo $your_name
只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
下面的例子尝试更改只读变量,结果报错:
#!/bin/bashmyUrl="https://www.google.com"readonly myUrlmyUrl="https://www.runoob.com"
删除变量
unset variable_name
条件判断
if Statement
#!/bin/bash# Define a variableNUMBER=3# Check if the number is greater than 5if [ $NUMBER -gt 5 ]; thenecho "The number is greater than 5."elseecho "The number is not greater than 5."fi
if-else Statement
#!/bin/bash# Define a variableNUMBER=3# Check if the number is greater than 5if [ $NUMBER -gt 5 ]; thenecho "The number is greater than 5."elseecho "The number is not greater than 5."fi
if-elif-else Statement
#!/bin/bash# Define a variableNUMBER=5# Check different conditionsif [ $NUMBER -gt 5 ]; thenecho "The number is greater than 5."elif [ $NUMBER -eq 5 ]; thenecho "The number is equal to 5."elseecho "The number is less than 5."fi
function
#!/bin/bash# Define the functiongreet() {echo "Hello"}# Call the functiongreet
function with parameter
#!/bin/bash# Define the functiongreet() {echo "Hello, $1!"}# Call the functiongreet "Alice"// output// Hello, Alice!
More Complex Function
#!/bin/bash# Function to add two numbersadd_numbers() {local sum=$(( $1 + $2 )) # Calculate the sumecho $sum # Print the sum}# Call the function and capture the outputresult=$(add_numbers 5 10)# Print the resultecho "The sum is: $result"